java - 未经检查的转换 : 'java.io.Serializable' to 'java.util.ArrayList<android.app.Fragment>'

标签 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);

然后在我的新 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>

改为尝试,

  1. MySecondActivity 创建您要在 onCreate 中传递给它的这些 fragment
  2. 将要传递给 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/

相关文章:

java - android studio Arraylist按降序排序

android - 将对象的大小调整为屏幕的大小

java - 排序数组列表

android - 在抽屉导航 Activity 中,我应该在菜单上使用 Activity 还是 fragment ?

java - 找出模型属性在 Hybris 中发生变化的地方

java - 警告 : [unchecked] unchecked cast. 泛型

java - 不安全或未经检查的操作警告

java - 类型转换为嵌套在泛型类中的类

java - 使用 ContainerRequestFilter 在 Jersey WebService 中自定义 @RolesAllowed 角色

java - 继承后保护成员行为。