【问题标题】:Not able to intent from Fragment to activity无法从片段到活动的意图
【发布时间】:2017-02-12 16:04:23
【问题描述】:

我已经从代码中添加了片段,并在创建它们时将数据从活动传递到了片段,现在当我编写代码以从该片段转移到其他一些活动时,我得到了...java.lang.RuntimeException:Parcel : 无法编组值

这是我在 Main 类中用来创建片段的代码

Log.e("list=",data.toString());
fragments.add(MyFragment.newInstance(data,values.toString(),response1));
data=new ArrayList<>();
pageAdapter=new MyPageAdapter(getSupportFragmentManager(),fragments);
pager.setAdapter(pageAdapter);

这是真正的 Fragment 类

public class MyFragment extends Fragment   {
    public static final String EXTRA_MESSAGE = "EXTRA_MESSAGE";
    public static final String EXTRA_MESSAGE1 = "Check";
    public static final String EXTRA_MESSAGE2 = "Check1";
    String order_id;
    private ProgressDialog pDialog;
    SwipeMenuListView listView;

    public static final MyFragment newInstance(List<Data> data,String check,String response)
    {
        MyFragment f = new MyFragment();
        Bundle bdl = new Bundle(3);
        bdl.putSerializable(EXTRA_MESSAGE, (Serializable) data);
        bdl.putString(EXTRA_MESSAGE1, check);
        bdl.putString(EXTRA_MESSAGE2, response);
        f.setArguments(bdl);
        return f;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {

        List<Data> message = (List<Data>) getArguments().getSerializable(EXTRA_MESSAGE);
        final String show = getArguments().getString(EXTRA_MESSAGE1);
        final String responseaa=getArguments().getString(EXTRA_MESSAGE2);
    }
}

现在在 OnCreateView 中,当我使用意图移动到另一个活动时,它会给出 java.lang.RuntimeException: Parcel: unable to marshal value

这是日志

java.lang.RuntimeException: Parcel: 无法编组值 com.sindhibandhan.digitalstrikers.dynamicfragment.Data@30898801 在 android.os.Parcel.writeValue(Parcel.java:1337) 在 android.os.Parcel.writeList(Parcel.java:711) 在 android.os.Parcel.writeValue(Parcel.java:1284) 在 android.os.Parcel.writeArrayMapInternal(Parcel.java:638) 在 android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313) 在 android.os.Bundle.writeToParcel(Bundle.java:1096) 在 android.os.Parcel.writeBundle(Parcel.java:663) 在 android.support.v4.app.FragmentState.writeToParcel(Fragment.java:142) 在 android.os.Parcel.writeTypedArray(Parcel.java:1191) 在 android.support.v4.app.FragmentManagerState.writeToParcel(FragmentManager.java:396) 在 android.os.Parcel.writeParcelable(Parcel.java:1357) 在 android.os.Parcel.writeValue(Parcel.java:1262) 在 android.os.Parcel.writeArrayMapInternal(Parcel.java:638) 在 android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313) 在 android.os.Bundle.writeToParcel(Bundle.java:1096) 在 android.os.Parcel.writeBundle(Parcel.java:663) 在 android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:2992) 在 android.app.ActivityThread$StopInfo.run(ActivityThread.java:3450) 在 android.os.Handler.handleCallback(Handler.java:810) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:189) 在 android.app.ActivityThread.main(ActivityThread.java:5529) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:956) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:751)

【问题讨论】:

  • 请给我看看你的代码
  • @ArthurKorchagin..现在请看代码
  • 使用堆栈跟踪也显示 logcat 错误消息
  • @VygintasB 现在显示了

标签: android android-fragments


【解决方案1】:

您的 Data 对象不可序列化。

public class Data implements Serializable{

}

检查这个link

【讨论】:

  • 你在问主类,在这种情况下?
  • 你已经创建了一个名为 Data 的对象类...在那边做这个
  • 非常感谢,我整天都在与这个作斗争,用 Parcelables 进行了测试,但什么也没做,但是这个答案很好用,我认为这是可序列化的,因为使用了注释,但很明显我错了,谢谢。
猜你喜欢
  • 1970-01-01
  • 2021-03-03
  • 2016-03-08
  • 2020-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-05
  • 1970-01-01
相关资源
最近更新 更多