我通过 Intent 将电影对象的 ArrayList 从 MainActivity
传递到 DetailActivity
。
intent.putExtra(KEY_mFavoriteMovies, mFavoriteMovies);
startActivity(intent);
在此其他 Activity 中,我将添加其他影片对象。
mFavoriteMovies(movie);
但是,MainActivity
中的mFavoriteMovies
似乎不包含其他影片对象。
这种行为是预期的吗?
最佳答案
这是预期的行为,因为当您在 DetailActivity
修改数组列表时,您正在使用电影列表的不同实例。
您可以通过使用 startActivityForResult
启动 DetailActivity
来获取对列表所做的更改,然后将更新后的列表发送回您的 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();
}
关于java - 无法通过 Intent 附加传递对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45314804/