【发布时间】:2015-12-18 00:18:02
【问题描述】:
我正在尝试将一个数组列表从一个活动传递到另一个活动的片段。我搜索了很多解决方案,但无法得到有效的答案。
这是我传递数组列表的地方。
Intent intent = new Intent(SizeActivity.this,CartActivity.class);
intent.putExtra("PrintList", photoPrintsList);
startActivity(intent);
在带有片段的活动中接受。
public class ExampleActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cart);
if (savedInstanceState == null) {
Fragment newFragment = new CartActivityFragment();
newFragment.setArguments(getIntent().getExtras());
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.commit();
}
}
这就是片段。如何将数据从一个活动传递到另一个片段。
private ArrayList<PhotoPrints> printsArrayList = new ArrayList<>();
private String TAG = "CartActivityFragment";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_cart, container, false);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Bundle b = getArguments();
if(b != null) {
Log.d(TAG,b.size() + "");
printsArrayList = b.getParcelableArrayList("PrintList");
Log.d(TAG,"Got arraylist");
} else {
Log.d(TAG,"Null");
}
}
编辑:
我发现我的片段的 onCreateView 在持有活动的 onCreate 之前被调用。这样我就无法将数据从活动中继到片段。查看日志。
09-21 17:21:32.539 22672-22672/in.reduxpress D/CartActivityFragment﹕ Null checker
09-21 17:21:32.539 22672-22672/in.reduxpress D/CartActivityFragment﹕ Null
09-21 17:21:32.539 22672-22672/in.reduxpress D/CartActivity﹕ Received Arraylist
09-21 17:21:32.539 22672-22672/in.reduxpress D/CartActivity﹕ 0 /storage/emulated/0/WhatsApp/Media/WhatsApp Images/Sent/IMG-20150913-WA0014.jpg
09-21 17:21:32.539 22672-22672/in.reduxpress D/CartActivity﹕ 0 4 X 6
09-21 17:21:32.539 22672-22672/in.reduxpress D/CartActivity﹕ 0 Glossy
09-21 17:21:32.539 22672-22672/in.reduxpress D/CartActivity﹕ 0 Economy
09-21 17:21:32.539 22672-22672/in.reduxpress D/CartActivity﹕ 0 6
09-21 17:21:32.539 22672-22672/in.reduxpress D/CartActivity﹕ 1 /storage/emulated/0/WhatsApp/Media/WhatsApp Images/Sent/IMG-20150913-WA0015.jpg
09-21 17:21:32.539 22672-22672/in.reduxpress D/CartActivity﹕ 1 4 X 6
09-21 17:21:32.539 22672-22672/in.reduxpress D/CartActivity﹕ 1 Glossy
09-21 17:21:32.539 22672-22672/in.reduxpress D/CartActivity﹕ 1 Economy
09-21 17:21:32.539 22672-22672/in.reduxpress D/CartActivity﹕ 1 6
09-21 17:21:32.539 22672-22672/in.reduxpress D/CartActivity﹕ 2 /storage/emulated/0/WhatsApp/Media/WhatsApp Images/Sent/IMG-20150915-WA0003.jpg
09-21 17:21:32.539 22672-22672/in.reduxpress D/CartActivity﹕ 2 4 X 6
09-21 17:21:32.539 22672-22672/in.reduxpress D/CartActivity﹕ 2 Glossy
09-21 17:21:32.539 22672-22672/in.reduxpress D/CartActivity﹕ 2 Economy
09-21 17:21:32.539 22672-22672/in.reduxpress D/CartActivity﹕ 2 6
09-21 17:21:32.539 22672-22672/in.reduxpress D/CartActivity﹕ Size of bundle 1
如何绕过这种行为?
Edit2:我已经进行了广泛的测试。我能够成功接收活动中的数据。我把它放在一个包中并将包设置为参数。但我无法接收片段中的捆绑包。它总是给我一个空值。
我尝试将 getArguments 放在 onCreateView 和 onActivityCreated 中,两者都不起作用。请帮忙。
【问题讨论】:
-
你遇到什么问题..?
-
请参考这个链接可能对你有帮助
-
你必须在你的 ArrayList 中实现 Serializable
-
请参考这个链接可能对你有帮助
标签: java android android-fragments arraylist parcelable