我正在通过意图将电影对象的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();
}