Передать объект ViewPager для другой деятельности

Я новичок в разработке для Android, поэтому я создал динамические представления, используя ViewPager и PagerAdapter. Я работаю с этой логикой в ​​своем классе ViewPagerHandler. Это начинается в Деятельности А.

Теперь я хочу добавить новые представления, отображаемые в действии A, из другого действия B. Мне нужен доступ к объекту PagerAdapter, чтобы добавить представления в мой массив и установить это представление в качестве текущего представления.

Я пытался передать объект ViewPagerHandler в намерение действия B, но потерпел неудачу с трассировкой ниже стека.

 java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.mak.test.weatherapp.ViewPagerHandler)
                                                                             at android.os.Parcel.writeSerializable(Parcel.java:1761)
                                                                             at android.os.Parcel.writeValue(Parcel.java:1709)
                                                                             at android.os.Parcel.writeArrayMapInternal(Parcel.java:777)
                                                                             at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1506)
                                                                             at android.os.Bundle.writeToParcel(Bundle.java:1181)
                                                                             at android.os.Parcel.writeBundle(Parcel.java:817)
                                                                             at android.content.Intent.writeToParcel(Intent.java:9480)
                                                                             at android.app.IActivityManager$Stub$Proxy.startActivity(IActivityManager.java:4340)
                                                                             at android.app.Instrumentation.execStartActivity(Instrumentation.java:1610)
                                                                             at android.app.Activity.startActivityForResult(Activity.java:4472)
                                                                             at android.support.v4.app.BaseFragmentActivityApi16.startActivityForResult(BaseFragmentActivityApi16.java:54)
                                                                             at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:67)
                                                                             at android.app.Activity.startActivityForResult(Activity.java:4430)
                                                                             at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:720)
                                                                             at android.app.Activity.startActivity(Activity.java:4791)
                                                                             at android.app.Activity.startActivity(Activity.java:4759)
                                                                             at com.sjsu.cmpe277.weatherapp.MainActivity.onOptionsItemSelected(MainActivity.java:179)
                                                                             at android.app.Activity.onMenuItemSelected(Activity.java:3435)
                                                                             at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:368)
                                                                             at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:195)
                                                                             at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:108)
                                                                             at android.support.v7.app.AppCompatDelegateImplV9.onMenuItemSelected(AppCompatDelegateImplV9.java:674)
                                                                             at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:822)
                                                                             at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:171)
                                                                             at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:973)
                                                                             at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:963)
                                                                             at android.support.v7.widget.ActionMenuView.invokeItem(ActionMenuView.java:624)
                                                                             at android.support.v7.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:150)
                                                                             at android.view.View.performClick(View.java:6256)
                                                                             at android.view.View$PerformClick.run(View.java:24697)
                                                                             at android.os.Handler.handleCallback(Handler.java:789)
                                                                             at android.os.Handler.dispatchMessage(Handler.java:98)
                                                                             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.io.NotSerializableException: com.mak.test.weatherapp.MainActivity
                                                                             at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1233)
                                                                             at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1597)
                                                                             at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1558)
                                                                             at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1481)
                                                                             at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1227)
                                                                             at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347)
                                                                             at android.os.Parcel.writeSerializable(Parcel.java:1756)

Я проверил различные посты и в которых предлагалось реализовать сериализуемые в вашем классе, я реализовал Serializable для всех классов, которые я использовал, но все еще получаю эту ошибку.

Есть ли способ, которым я могу передать доступ к этому объекту PagerAdapter из другой деятельности и добавить свои взгляды к нему.

1 ответ

Вы пытались использовать Parceler?

Это удивительная библиотека для использования посылок для отправки таможенных объектов через действия и фрагменты

Другие вопросы по тегам