【问题标题】:Android bottom navigation bar (with fragment) error switching viewsAndroid底部导航栏(带片段)错误切换视图
【发布时间】:2017-03-20 02:50:57
【问题描述】:

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

当片段仅用于一个活动时,一切正常,但是,我制作了 4 个不同的活动并将片段添加到每个活动中。

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

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相同

谢谢

【问题讨论】:

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


    【解决方案1】:

    在更改活动时。使用 getFragmenentManager() 更新您的片段管理器。 对我来说效果很好。

    【讨论】:

    • 你调用的是哪种方法?我是 Fragment 的新手,所以它对我来说并不像它应该的那样明显。
    猜你喜欢
    • 1970-01-01
    • 2023-01-20
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多