java - 无法通过 Intent 附加传递对象数组

标签 java android android-intent android-activity parcelable

我通过 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/

相关文章:

java - 在 Java 中使用 10 个线程打印 1 到 100

如果应用程序关闭,Android IntentService 无法完成任务

android - 用于处理联系人中的地址新闻的 Intent 过滤器?

java - 如何在 Wiremock Servlet 上启用响应模板?

java - 带有字符串列表的 spring boot 规范的 IN 子句

android - 如何使用 JSON 数据在 Android 中的 Google Maps Activity 上找到最近的标记?

机器人/位图.h : No such file or directory (after updating Android SDK tools to revision 14)

java - Android框架修改后的不匹配Dep签名

java - Android点击按钮自动发送短信

java - 无法从映射器 Hadoop 打开 HDFS 文件