Я вижу (не регулярно - просто очень редко = приблизительно 1 из 1000 раз) BadParcelableException
при попытке получить из Bundle
.
Кто-нибудь знает, почему это происходит?Я думал, что это должно происходить всегда или никогда, не случайно.Это мой код:
Удаляемый объект, который я помещаю в Пакет:
public interface ButtonPressedCallback extends Parcelable {
public void onButtonPressed ();
}
Вот как я помещаю его в Пакет
bundle.putString(MyFragment.TITLE, title);
bundle.putParcelable(MyFragment.CALLBACK , callback);
Вот как я его извлекаю (и вот он вылетает)
public class MyFragment extends Fragment {
private String title;
private ButtonPressedCallback callback;
public static final String TITLE = "TITLE";
public static final String CALLBACK = "CALLBACK";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle b = getArguments();
title = getArguments().getString(TITLE); // it crashes here
callback = b.getParcelable(CALLBACK );
...
}
Он загадочным образом вылетает на линии при извлечении только нормальной строкиНАЗВАНИЕ (странно ....), но я на 100% уверен, что с строкой все в порядке, и она на самом деле падает ниже - потому что она началась, когда я добавил интерфейс в Bundle
А вот вот stacktrace:
Caused by: android.os.BadParcelableException:
at android.os.Parcel.readParcelableCreator (Parcel.java:2875)
at android.os.Parcel.readParcelable (Parcel.java:2797)
at android.os.Parcel.readValue (Parcel.java:2700)
at android.os.Parcel.readArrayMapInternal (Parcel.java:3067)
at android.os.BaseBundle.unparcel (BaseBundle.java:257)
at android.os.BaseBundle.getString (BaseBundle.java:1086)
at sk.myapp.intro.MyFragment.onCreate (MyFragment.java:42)
at android.support.v4.app.Fragment.performCreate (Fragment.java:2414)
at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManagerImpl.java:1418)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState (FragmentManagerImpl.java:1784)
at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManagerImpl.java:1852)
at android.support.v4.app.FragmentManagerImpl.dispatchStateChange (FragmentManagerImpl.java:3269)
at android.support.v4.app.FragmentManagerImpl.dispatchCreate (FragmentManagerImpl.java:3223)
at android.support.v4.app.FragmentController.dispatchCreate (FragmentController.java:190)
at android.support.v4.app.FragmentActivity.onCreate (FragmentActivity.java:369)
at sk.myapp.intro.MainActivity.onCreate (MainActivity.java:46)
at android.app.Activity.performCreate (Activity.java:7183)
at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1221)
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2910)
at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3032)
at android.app.ActivityThread.-wrap11 (Unknown Source)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1696)
at android.os.Handler.dispatchMessage (Handler.java:105)
at android.os.Looper.loop (Looper.java:164)
at android.app.ActivityThread.main (ActivityThread.java:6942)
at java.lang.reflect.Method.invoke (Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:327)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1374)