首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Parcelable遇到IOException写入由java.io.NotSerializableException引起的可序列化对象:java.io.NotSerializableException 2.IOException$1

Parcelable遇到IOException写入由java.io.NotSerializableException引起的可序列化对象:java.io.NotSerializableException 2.IOException$1
EN

Stack Overflow用户
提问于 2018-02-10 06:19:02
回答 1查看 1K关注 0票数 3

我的ViewModel实现了可序列化,并且我已经定义了按钮单击方法,如下所示。

代码语言:javascript
复制
public class FragmentHomeViewModel
 extends BaseObservable 
implements Serializable {
private Rerofit retrofit;
private HomeScreen activity;

public FragmentHomeViewModel(HomeScreen activity) {

        this.activity = activity;
        retrofit = MyGlobal.getMyGlobale(activity).getNetComponent().retrofit();

    }
//
//....code

 public void onClickCuisine(View view){
         Intent intent = new Intent(view.getContext(), SelectCuisineActivity.class);
            (view.getContext()).startActivity(intent);
       Log.e("is clicked"," may be");
    }


} 

下面是我的xml类,它附带了这个视图模型

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<layout   xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    >
    <data class="Item4DataMindingCuisine">
        <import type="com.aman.camellia.kniterider.utils.Constrants" />
        <variable
            name="index"
            type="int"/>
        <variable
            name="viewModel"
            type="com.aman.camellia.kniterider.viewmodel.FragmentHomeViewModel"/>
    </data>
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/dim6dp"
        android:layout_marginLeft="@dimen/dim10dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_marginBottom="8dp"
            android:layout_marginEnd="8dp"
            android:layout_marginTop="8dp"
            android:text="View All"
            android:textColor="@color/colorPrimary"
            android:textSize="@dimen/text16sp"
            android:onClick="@{viewModel::onClickCuisine}"
            app:fontText="@{Constrants.BOLD_FONT}"
          />

    </RelativeLayout>

</layout>

现在,在文本视图上单击我正在获取的

com.aman.camellia.kniterider.viewmodel.FragmentHomeViewModel):Parcelable遇到了写入可序列化对象的IOException (名称=java.lang.RuntimeException)

代码语言:javascript
复制
 Caused by: java.io.NotSerializableException: retrofit2.Retrofit$1

我认为这个错误的原因可能是我使用的修改(实际上我用匕首)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-10 09:16:24

好的,我终于得到了答案。造成此问题的原因是,我的视图模型实现了Serializable和reason实例没有序列化,所以要么需要序列化改造,要么是将它作为临时变量使其不被序列化。在那之后我的视图模型将是..。

代码语言:javascript
复制
public class FragmentHomeViewModel
 extends BaseObservable 
implements Serializable {
transient Rerofit retrofit;
private HomeScreen activity;

public FragmentHomeViewModel(HomeScreen activity) {

        this.activity = activity;
        retrofit = MyGlobal.getMyGlobale(activity).getNetComponent().retrofit();

    }
//
//....code

 public void onClickCuisine(View view){
         Intent intent = new Intent(view.getContext(), SelectCuisineActivity.class);
            (view.getContext()).startActivity(intent);
       Log.e("is clicked"," may be");
    }


} 

另一项活动成功地开始了。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48717880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档