未经检查的铸件:';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。