我收到未经检查的转换警告,我不确定抑制它是否安全。
我正在放一个 ArrayList<Fragment>
在 Bundle
里面.然后将此 Bundle 放入我的 Intent 中,如下所示:
Intent mIntent = new Intent(getBaseContext(),MySecondActivity.class);
Bundle myBundle = new Bundle();
myBundle.putSerializable("fragmentList",ArrayList<Fragment>);
mIntent.putExtras(myBundle);
startActivity(mIntent);
然后在我的新 Activity (MySecondActivity) 中,我使用以下代码检索此数据:
(ArrayList<Fragment>) getIntent().getSerializableExtra("fragmentList")
我的编译器给我以下警告:
" Unchecked cast: 'java.io.Serializable' to 'java.util.ArrayList' "
尽管一切正常,我说我可以安全地抑制它是否正确?
谢谢!
最佳答案
fragment 不可序列化, fragment 的数组列表也是如此。所以,这里的 putSerializable
将永远不起作用。即使它们是可序列化的,您仍然需要正确使用该方法。像这样的东西:
ArrayList<Fragment> fragmentArrayList = new ArrayList<Fragment>();
fragmentList.add(foo);
...
myBundle.putSerializable("fragmentList", fragmentArrayList); //not ArrayList<Fragment>
改为尝试,
- 让
MySecondActivity
创建您要在onCreate
中传递给它的这些 fragment - 将要传递给
MySecondActivity
的数据类放入该 Intent 的包中,但要实现Parcelable
相反,因为它比 Serializable 更快/更好
对于第二步,here is a tutorial关于使您的数据类实现 Parcelable
HTHs!!!
关于java - 未经检查的转换 : 'java.io.Serializable' to 'java.util.ArrayList<android.app.Fragment>' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24962937/