Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未经检查的铸件:';java.io.Serializable';至';java.util.ArrayList<;android.app.Fragment>';_Java_Android_Unchecked Cast - Fatal编程技术网

未经检查的铸件:';java.io.Serializable';至';java.util.ArrayList<;android.app.Fragment>';

未经检查的铸件:';java.io.Serializable';至';java.util.ArrayList<;android.app.Fragment>';,java,android,unchecked-cast,Java,Android,Unchecked Cast,我得到一个未经检查的施法警告,我不确定是否可以安全地抑制它 我将一个ArrayList放在包中。然后将此捆绑包放入我的意图中,如下所示: Intent mIntent = new Intent(getBaseContext(),MySecondActivity.class); Bundle myBundle = new Bundle(); myBundle.putSerializable("fragmentList",ArrayList<Fragment>); mIntent.put

我得到一个未经检查的施法警告,我不确定是否可以安全地抑制它

我将一个
ArrayList
放在
包中
。然后将此捆绑包放入我的意图中,如下所示:

Intent mIntent = new Intent(getBaseContext(),MySecondActivity.class);
Bundle myBundle = new Bundle();
myBundle.putSerializable("fragmentList",ArrayList<Fragment>);
mIntent.putExtras(myBundle);
startActivity(mIntent);
Intent minent=newintent(getBaseContext(),MySecondActivity.class);
Bundle myBundle=新Bundle();
putSerializable(“碎片列表”,ArrayList);
minent.putExtras(myBundle);
星触觉;
然后在我的新活动(MySecondActivity)中,我使用以下代码检索此数据:

(ArrayList<Fragment>) getIntent().getSerializableExtra("fragmentList")
(ArrayList)getIntent().getSerializableExtra(“碎片列表”)
我的编译器向我发出以下警告:

未选中的强制转换:“java.io.Serializable”到 “java.util.ArrayList”

不过一切都很好,我说我可以安全地抑制它,对吗


谢谢大家!

片段不可序列化,对于片段的数组列表也是如此。因此,在这种情况下,
putSerializable
永远不会起作用。即使它们是可序列化的,您仍然需要正确使用该方法。比如:

ArrayList<Fragment> fragmentArrayList = new ArrayList<Fragment>();
fragmentList.add(foo);
...
myBundle.putSerializable("fragmentList", fragmentArrayList);  //not ArrayList<Fragment>
ArrayList fragmentArrayList=new ArrayList();
碎片列表。添加(foo);
...
putSerializable(“fragmentList”,fragmentArrayList)//不是ArrayList
相反,尝试

  • MySecondActivity
    onCreate
  • 出于这个目的,将要传递给
    MySecondActivity
    的数据类放在bundle中,但要实现,因为它比序列化更快/更好
  • 对于第二步,关于使数据类实现


    假设您完全控制“fragmentList”,是的。动态检查对象是否确实是ArrayList,以及每个元素是否确实是片段并不十分昂贵。万一出了问题,这可能会给你一个更好的诊断。(我们都知道善良的老墨菲;-)我确实完全控制着碎片清单。我将尝试动态检查每个元素是否确实是一个片段。如果这样做了,我能简单地抑制警告吗?这正是我正在做的,我没有发布它,因为我认为如果你没有看到我的全部代码,它就没有意义了。这就是我把ArrayList放在那里的原因。为了简单起见,我使用了Serializable。我真的不需要快速发送数据,但是我会看看Parcelable。