未经检查的演员:&#39; java.io.Serializable&#39; to&#39; java.util.ArrayList <android.app.fragment>&#39; </android.app.fragment>

时间:2014-07-25 19:12:09

标签: java android unchecked-cast

我收到了一个未经检查的投射警告,我不确定是否可以安全地禁止它。

我在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);

然后在我的新活动(MySecondActivity)上,我使用以下代码检索此数据:

(ArrayList<Fragment>) getIntent().getSerializableExtra("fragmentList")

我的编译器给了我以下警告:

  

&#34;未经检查的演员:&#39; java.io.Serializable&#39;至   &#39;的java.util.ArrayList&#39; &#34;

一切都运转良好,我说得对,我可以安全地压制它吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

片段不可序列化,对于片段的ArrayLists也是如此。因此,putSerializable中的ArrayList<Fragment> fragmentArrayList = new ArrayList<Fragment>(); fragmentList.add(foo); ... myBundle.putSerializable("fragmentList", fragmentArrayList); //not ArrayList<Fragment> 永远不会起作用。即使它们是可序列化的,您仍然需要正确使用该方法。类似的东西:

MySecondActivity

相反尝试,

  1. onCreateMySecondActivity
  2. 中创建您希望传递给它的片段
  3. 将要传递的数据类放置到该意图的包中的{{1}},但实现Parcelable,因为它比Serializable更快/更好
  4. 对于第二步,here is a tutorial关于使您的数据类实现Parcelable

    HTHS !!!