Android 在ViewPager导航中使用什么-片段到片段或片段到活动?
在ViewPager中实现什么更好Android 在ViewPager导航中使用什么-片段到片段或片段到活动?,android,android-fragments,android-activity,android-viewpager,Android,Android Fragments,Android Activity,Android Viewpager,在ViewPager中实现什么更好 通过替换片段打开另一个片段的片段 或 通过意图打开活动的片段 我两者都用过,而且都有各自的缺点 第一个问题 当处于 第二段 返回时会导致ANR错误和奇怪的logcat错误 堆栈(不是每次都是这样,这让我头痛)。(见下面的日志) 第二个问题 它从一个片段转到另一个活动,但在从第二个片段返回到第二个活动之后 首先,按下“上一步”按钮后,它再次返回“活动” 再按一次后退按钮,它就进入了第一个状态 片段/viewpager/main活动的 Logcat E/Andro
第二段
E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.widefide.musicplayer, PID: 14058
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.widefide.musicplayer/com.widefide.musicplayer.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3947)
at android.app.ActivityThread.access$900(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1309)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
at com.widefide.musicplayer.Fragments.Playlists.PlaylistsFragment.onActivityCreated(PlaylistsFragment.java:72)
at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1797)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:979)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1120)
at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1929)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:547)
at com.widefide.musicplayer.MainActivity.onStart(MainActivity.java:127)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1236)
at android.app.Activity.performStart(Activity.java:6006)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2288)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3947)
at android.app.ActivityThread.access$900(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1309)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
从第一个问题开始,在第一种情况下,很明显你们想要一个新的屏幕,所以最好是一个新的活动。第二个解决方案中的问题似乎是一个bug,请发布代码以便我们能够解决它。ViewPager是一个片段到片段的导航 你必须通过碎片列表。当您滚动页面时,片段将替换为下一个片段
在1st中,您可以通过通知父
活动
来替换片段
本身,而活动
将用其他片段
替换该片段。您仍然可以通过活动
控制工具栏
。您可以通过(使用接口
)或使用
在我更喜欢的2nd中,您可以轻松地有目的地打开活动
,您可以通过on backpressed
或。控制您的背压。这两个问题看起来都是可以解决的(除了viewpager仍然显示选项卡之外),您应该只显示一些代码?如果你必须实现一个,你会选择哪一个?没有更好的选择,这取决于内容。显示联系人列表并单击联系人,您可以转到他的个人资料页面?最好开始一项新的活动。显示用户可以通过单击编辑的简单字符串列表?最好呆在那里。这取决于设计选择,取决于您如何安排选项卡。。。