我正在通过意图将电影对象的ArrayList从MainActivity传递到DetailActivity

intent.putExtra(KEY_mFavoriteMovies, mFavoriteMovies);
startActivity(intent);


在此其他活动中,我将添加其他电影对象。

mFavoriteMovies(movie);


但是,mFavoriteMovies中的MainActivity似乎不包含其他影片对象。

这是预期的行为吗?

最佳答案

这是预期的行为,因为在DetailActivity上修改阵列列表时,您正在使用电影列表的其他实例。

您可以通过以DetailActivity开头startActivityForResult然后将更新后的列表发送回MainActivity来获取对列表所做的更改。

您的MainActivity上会有类似的内容

ArrayList<String> mMovies;
int DETAIL_REQUEST_CODE = 123;
String KEY_FAVORITE_MOVIES = "key-movies";

private void startDetailActivity() {
    Intent intent = new Intent(this, DetailActivity.class);
    intent.putStringArrayListExtra(KEY_FAVORITE_MOVIES, mMovies);
    startActivityForResult(intent, DETAIL_REQUEST_CODE);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == DETAIL_REQUEST_CODE && resultCode == RESULT_OK) {
        mMovies = data.getStringArrayListExtra(KEY_FAVORITE_MOVIES);
    }
}


您将必须从DetailActivity发送更新后的列表,如下所示:

public void finishDetail() {
    Intent resultIntent = new Intent();
    resultIntent.putStringArrayListExtra(KEY_FAVORITE_MOVIES, mMovies);
    setResult(Activity.RESULT_OK, resultIntent);
    finish();
}

10-05 18:41