【发布时间】:2018-02-28 22:19:23
【问题描述】:
当我尝试存储从 Fragment 类中的意图检索的 ArrayList 时,出现异常 cannot be cast to java.util.ArrayList。
现在我正在使用适配器的意图将 ArrayList 传递给我的片段类。我的片段类将使用 Parcelable 检索数据并将其存储到一个对象中,以便我可以将数据用于我的片段类。但问题是一旦它检索到数据,它就会引发异常。是不是因为我使用了错误的对象来存储我的数据?
MainAdapter 类:
final Intent intent = new Intent(view.getContext(), DetailActivityFragment.class);
intent.putExtra("baking_app", mbakingAppsDataModels.get(position));
Log.d("onClick mBDM size: ", mbakingAppsDataModels.get(position)+"");
//intent.putExtras(args);
view.getContext().startActivity(intent);
片段类:
Bundle args = getIntent().getExtras();
ArrayList<BakingAppsDataModel> bakingAppsDataModels = args.getParcelable("baking_app");
例外:
FATAL EXCEPTION: main
Process: com.example.kavin.bakingapp, PID: 22716
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.kavin.bakingapp/com.example.kavin.bakingapp.ui.DetailActivityFragment}: java.lang.ClassCastException: com.example.kavin.bakingapp.Data.BakingAppsDataModel cannot be cast to java.util.ArrayList
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: java.lang.ClassCastException: com.example.kavin.bakingapp.Data.BakingAppsDataModel cannot be cast to java.util.ArrayList
at com.example.kavin.bakingapp.ui.DetailActivityFragment.onCreate(DetailActivityFragment.java:30)
【问题讨论】:
-
这是一个列表吗??
mbakingAppsDataModels. -
您可以将代码缩进 4 个空格来正确格式化,而不是使用反引号。
-
@SantanuSur 它是一个 ArrayList
-
@csmckelvey 会不会,我会记住的
标签: android android-fragments android-intent android-recyclerview