// Get data back from child activity.
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode != RESULT_OK) {
      return;
    }

    String id = data.getStringExtra(Constants.KEY_ID);
    String subject = data.getStringExtra(Constants.KEY_SUBJECT);
    String body = data.getStringExtra(Constants.KEY_BODY);
    String url = data.getStringExtra(Constants.KEY_URL);
    float rating = data.getFloatExtra(Constants.KEY_RATING, 0);
    boolean isWatched = data.getBooleanExtra(Constants.KEY_IS_WATCHED, false);

    // When returning from Editor Screen, add/update a movie in the list.
    if (requestCode == REQUEST_EDITOR) {
      if (id.equals(Constants.VALUE_NEW_MOVIE)) {
        // New Movie in list.
        Movie movie = new Movie(subject, body, url, rating, isWatched);
        mMovies.add(movie);

        // Add to file.
        FileManager.addToFile(this, FILE_NAME, movie);
      } else {
        int position = data.getIntExtra(Constants.KEY_POSITION, -1);
        // Update the movie in list at id position.
        Movie movie = mMovies.get(position);
        movie.setSubject(subject);
        movie.setBody(body);
        movie.setUrl(url);
        movie.setRating(rating);
        movie.setIsWatched(isWatched);

        // Rewrite the file.
        FileManager.saveFile(this, FILE_NAME, mMovies);
      }
    }
    // On returning from Search screen, add new movie in the list.
    else if (requestCode == REQUEST_SEARCH) {
      // New Movie in list.
      Movie movie = new Movie(id, subject, body, url);
      movie.setRating(rating);
      mMovies.add(movie);

      // Add to file.
      FileManager.addToFile(this, FILE_NAME, movie);
    }

    mMainListAdapter.notifyDataSetChanged();
  }
  // On open application create listview, load movie data from file and
  // show it.
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Loading movie list from the file, if failed - reset the array list.
    if (FileManager.loadFile(this, FILE_NAME, mMovies) == FileManager.RESULT_ERROR) {
      mMovies = new ArrayList<>();
    }

    mListViewMovies = (ListView) findViewById(R.id.listViewMainMovies);
    mEmptyMainMovieList = (TextView) findViewById(R.id.emptyMainMovieList);
    mTextViewMainTopic = (TextView) findViewById(R.id.textViewMainTopic);

    // ListView adapter initialising.
    mMainListAdapter = new MainListAdapter(this, mMovies);
    mListViewMovies.setAdapter(mMainListAdapter);

    // On Item click transferring to Editor Screen.
    mListViewMovies.setOnItemClickListener(
        new AdapterView.OnItemClickListener() {
          @Override
          public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            transferToEditorActivity(position);
          }
        });

    // On Item Long click, open menu for edit and delete options.
    mListViewMovies.setOnItemLongClickListener(
        new AdapterView.OnItemLongClickListener() {
          @Override
          public boolean onItemLongClick(
              AdapterView<?> parent, View view, final int position, long id) {
            PopupMenu popupMenu = new PopupMenu(MainActivity.this, view);
            popupMenu.setOnMenuItemClickListener(
                new PopupMenu.OnMenuItemClickListener() {
                  @Override
                  public boolean onMenuItemClick(MenuItem item) {
                    switch (item.getItemId()) {
                        // Delete the movie from list and file.
                      case R.id.action_delete:
                        // Open confirmation dialog.
                        new AlertDialog.Builder(MainActivity.this)
                            .setTitle(R.string.dialog_delete_movie_title)
                            .setMessage(R.string.dialog_delete_all_message)
                            .setPositiveButton(
                                R.string.dialog_delete_movie_positive_button_label,
                                new DialogInterface.OnClickListener() {
                                  @Override
                                  public void onClick(DialogInterface dialog, int which) {
                                    mMovies.remove(position);
                                    FileManager.saveFile(MainActivity.this, FILE_NAME, mMovies);
                                    mMainListAdapter.notifyDataSetChanged();
                                  }
                                })
                            .setNegativeButton(R.string.button_cancel_label, null)
                            .create()
                            .show();

                        break;

                        // Go to Editor activity.
                      case R.id.action_edit:
                        transferToEditorActivity(position);
                        break;
                    }

                    return true;
                  }
                });
            popupMenu.inflate(R.menu.menu_item);
            popupMenu.show();

            return true;
          }
        });

    mListViewMovies.setEmptyView(mEmptyMainMovieList);
  }