Android底部导航栏(带片段)错误切换视图

时间:2016-11-06 19:40:24

标签: android android-fragments android-activity material-design

我已经实现了一个底栏导航片段using this tutorial

当片段仅用于一个活动时,一切都运行良好,但是,我做了4个不同的活动,并将片段添加到每个活动中。

我在每个Activity中都有以下case语句,当单击底栏导航按钮时,它们应该切换到相应的活动。

bottomBar.setOnItemSelectedListener(new OnTabSelectedListener() {
        @Override
        public void onItemSelected(int position) {
            switch (position) {
                case 0:
                    break;
                case 1:
                    Intent sellIntent = new Intent(getApplicationContext(), SellActivity.class);
                    sellIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(sellIntent);
                    break;
                case 2:
                    Intent messagesIntent = new Intent(getApplicationContext(), MessagesActivity.class);
                    messagesIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(messagesIntent);
                    break;
                case 3:
                    Intent profileIntent = new Intent(getApplicationContext(), ProfileActivity.class);
                    profileIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(profileIntent);
                    break;

            }
        }

但是,当我点击其中一个导航按钮(例如案例1)时,我收到此错误。

FATAL EXCEPTION: main Process: me.xxx.spring, PID: 9000
                                                          java.lang.RuntimeException: Unable to start activity ComponentInfo{me.xx.spring/me.xx.spring.SellActivity}: java.lang.IllegalArgumentException: No view found for id 0x7f0c006f (me.xx.spring:id/fragmentContainer) for fragment MyBottomNavFragment{8e1720 #0 id=0x7f0c006f}
                                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
                                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
                                                                 at android.app.ActivityThread.-wrap12(ActivityThread.java)
                                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
                                                                 at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                 at android.os.Looper.loop(Looper.java:154)
                                                                 at android.app.ActivityThread.main(ActivityThread.java:6077)
                                                                 at java.lang.reflect.Method.invoke(Native Method)
                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
                                                              Caused by: java.lang.IllegalArgumentException: No view found for id 0x7f0c006f (me.xx.spring:id/fragmentContainer) for fragment MyBottomNavFragment{8e1720 #0 id=0x7f0c006f}
                                                                 at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1107)
                                                                 at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1295)
                                                                 at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801)
                                                                 at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1682)
                                                                 at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:388)
                                                                 at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:607)
                                                                 at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:181)
                                                                 at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1248)
                                                                 at android.app.Activity.performStart(Activity.java:6681)
                                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2609)
                                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) 
                                                                 at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) 
                                                                 at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                 at android.os.Looper.loop(Looper.java:154) 
                                                                 at android.app.ActivityThread.main(ActivityThread.java:6077) 
                                                                 at java.lang.reflect.Method.invoke(Native Method) 
                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 

有人知道我哪里出错吗?

我不会发布任何其他代码,例如片段类,因为它与here

相同

由于

1 个答案:

答案 0 :(得分:0)

改变活动时。使用getFragmenentManager()更新Fragment Manager。 它对我有用。