使用 Intent 从一个 Activity 发送列表对象到另一个使用 Parcelable | Android
Send List Objects using Intent from one Activity to another using Parcelable | Android
我有 Arraylist private ArrayList<Movies> mMovies;
类型的 Movies 实现为 MainActivity
中定义的 Parcelable
。
mMovies
包含 20 部左右的电影列表。
在MainActivity
内在onCreateView()
方法内
我试图将可打包对象传递给另一个名为 DetailActivity
的 Activity
Intent intent = new Intent(getActivity(), DetailActivity.class);
intent.putExtra("MOVIES", movieList);
startActivity(intent);
使用调试器我可以看到 movieList
包含 20 行。
这就是我尝试读取通过 MainActivity 的意图传递的可打包对象的方式。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getActivity().getIntent().getExtras();
mMovies = getActivity().getIntent().getParcelableExtra("MOVIES");
}
当我尝试使用调试器查看 mMovies
值时,它显示 null
我的建议是将电影 class 导出到 Json 字符串,如:Android- create JSON Array and JSON Object
然后,将它作为字符串从一个 Intent 传递给第二个
请改用 putParcelable("MOVIES",mMovies);
和 getParcelableArrayListExtra("MOVIES")
。 How can I make my custom objects Parcelable? 可能会提供更多见解。
首先,您放入 extras 列表,但要获取移动对象,请使用 getParcelableArrayList()
其次,检查 Parcelable 实现(并确保在 CREATOR 中调用正确的构造函数)
我有 Arraylist private ArrayList<Movies> mMovies;
类型的 Movies 实现为 MainActivity
中定义的 Parcelable
。
mMovies
包含 20 部左右的电影列表。
在MainActivity
内在onCreateView()
方法内
我试图将可打包对象传递给另一个名为 DetailActivity
Intent intent = new Intent(getActivity(), DetailActivity.class);
intent.putExtra("MOVIES", movieList);
startActivity(intent);
使用调试器我可以看到 movieList
包含 20 行。
这就是我尝试读取通过 MainActivity 的意图传递的可打包对象的方式。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getActivity().getIntent().getExtras();
mMovies = getActivity().getIntent().getParcelableExtra("MOVIES");
}
当我尝试使用调试器查看 mMovies
值时,它显示 null
我的建议是将电影 class 导出到 Json 字符串,如:Android- create JSON Array and JSON Object 然后,将它作为字符串从一个 Intent 传递给第二个
请改用 putParcelable("MOVIES",mMovies);
和 getParcelableArrayListExtra("MOVIES")
。 How can I make my custom objects Parcelable? 可能会提供更多见解。
首先,您放入 extras 列表,但要获取移动对象,请使用 getParcelableArrayList()
其次,检查 Parcelable 实现(并确保在 CREATOR 中调用正确的构造函数)