android - 如何将不可分割的对象从一个 Activity 传递到另一个 Activity ?

标签 android android-intent bundle start-activity

我有两个从两个不同类实例化的对象,两个类都没有实现 parcelable 或 serializable。我想将这些对象传递给 另一个 Activity ,所以我写了下面的代码:

*代码:

 //send object
 Intent intConnect = new Intent(mCtx.getApplicationContext(), ActConnect.class);
            Bundle bndConnect = new Bundle();
            bndConnect.putParcelable("HeaderModel", (Parcelable) mHeaderModel);
            bndConnect.putParcelable("DetailsModel", (Parcelable) mDetailsModel);
            intConnect.putExtras(bndConnect);
            intConnect.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            mCtx.startActivity(intConnect);

//receive objects in the receiving activity
 Bundle extras = getIntent().getExtras();
    Header headerModel = (Header) extras.get("HeaderModel");
    Details detailsModel = (Details) extras.get("DetailsModel");

但在运行时,我收到以下 logcat:

日志:

10-08 11:55:44.225  13138-13138/com.example.com.bt_11 E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.com.bt_11, PID: 13138
java.lang.ClassCastException: com.example.com.adapter.Header cannot be cast to android.os.Parcelable
        at com.example.com.adapter.MyExpandableList$1.onClick(MyExpandableList.java:152)
        at android.view.View.performClick(View.java:5184)
        at android.view.View$PerformClick.run(View.java:20893)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)

如何将不可分割的对象从一个 Activity 传递到另一个 Activity ?

最佳答案

如果您的类没有实现 parcelable 或 serializable,并且您无法修改它们(代码可能不在您的控制之下),那么您就无法直接在两个 Activity 之间发送数据。

但是,您可以在两个 Activity 之间间接传递数据。您可以将它们存储在单例类中(但是单例很难测试等),您可以在应用程序类中保存和检索它们,或者您可以将它们保存到共享首选项中,文件或数据库由第二个 Activity 加载.

关于android - 如何将不可分割的对象从一个 Activity 传递到另一个 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33012615/

相关文章:

android - 抽屉导航不显示 fragment

android-如何在videoView下载视频时启用缓存或缓冲

javascript - MVC : Is there any way to create bundles in view?

android - 如何在没有 singleTop 的情况下使用 Android SearchView?

android - Intent.putExtra 会做什么

asp.net-mvc-4 - Asp.Net MVC Bundle 不使用现有的 .min.js

cocoa - 创建 bundle - 出了什么问题?

android - AsyncTask 和 SQLite 数据库

Java android 设置颜色 setFastScroll

android - Intent 的标志和 PendingIntent.getBroadcast