【问题标题】:"No View Found For ID" - Android Fragment“未找到 ID 视图” - Android 片段
【发布时间】:2014-12-29 18:06:14
【问题描述】:

所以我正在为朋友开发一个应用程序,但它一直在崩溃并且无法在我的设备(OnePlus One)上运行。

我在这里不断收到一条错误消息,提示“找不到 id 的视图”:

我有两节课; NavigationDrawer 类(本质上是我的 MainActivity):

Java --- http://pastebin.com/4BiYvxiS | XML --- http://pastebin.com/Fnat83uf

还有一个名为 StartingFragment 的类(我想在抽屉关闭/不活动时成为主视图)。

Java --- http://pastebin.com/HNeHzx1h | XML --- http://pastebin.com/2viTEWR8

这里是出现错误的代码(来自 NavDrawer.java):

        /** Swaps fragments in the main content view */
        /** Starts an Activity when item is clicked */
        private void selectItem(int position) {
                // Create a new fragment and specify the tea type
                // to show based on position
                Fragment fragment = new StartingFragment();
                Bundle args = new Bundle();
                args.putInt(StartingFragment.TEA_TYPE_POS, position);
                fragment.setArguments(args);

                // Insert the fragment by replacing any existing fragment
                FragmentManager fragManager = getFragmentManager();
                fragManager.beginTransaction().replace(R.id.starting_fragment, fragment)
                                .commit();

                // Highlight the selected item, update the title, and close the drawer
                mDrawerList.setItemChecked(position, true);
                setTitle(navDrawerTitles[position]);
                navDrawerLayout.closeDrawer(mDrawerList);

        }

我查看了整个 StackOverflow,发现其他人是如何收到此错误的,但我不完全确定为什么我不断收到此错误,或者如何修复它。

我在这里查看了这个问题: https://stackoverflow.com/a/8158916 我看到 R.id.starting_fragment 应该是 R.layout.nav_drawer

但是,我不知道要在我的代码中调整什么。我应该删除我拥有的按钮,然后在我的 nav_drawer.xml 中有片段代码吗?比如这样:

<fragment android:name="com.fv4.app.StartingFragment"
              android:id="@+id/starting_fragment"
              android:layout_width="0dp"
              android:layout_height="match_parent" />

或者真的...我应该在我的代码中用什么替换 R.id.starting_fragment

【问题讨论】:

    标签: java android xml android-fragments android-identifiers


    【解决方案1】:

    在您为活动提供的 xml 中,没有任何 id 为“starting_fragment”的内容,因此没有可替换的内容,在活动的 xml 中,需要有一个 id 为“starting_fragment”的视图/布局/片段容器。另外你有点困惑,.replace() 方法中的 Id 代表你要替换的东西而不是片段的布局

    简单修复

    在 Activity 的 xml 中创建一个 frameLayout,给它 id 'fragment_replace'

    将 .replace(R.id.starting_fragment,fragment) 更改为 .replace(R.id.fragment_replace,fragment)

    【讨论】:

    • 啊,好吧,我现在明白了(我想)。这就是我感到困惑的地方。好的,我调整了 FrameLayout,但现在出现了这个错误(我也调整了 pastebin 中的代码):puu.sh/dOpeZ/5ae8145f63.png
    • 当然,Java 必须抛出一个 NullPointer 所以......我从这里去哪里?
    • 是整个堆栈跟踪,它不会显示你在哪一行得到了 NPE
    • 这是在 Logcat 上打印出来的全部内容:puu.sh/dOxeF/7d4c78c097.png ---> puu.sh/dOxiP/bb04347bd9.png
    猜你喜欢
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    • 2014-09-02
    相关资源
    最近更新 更多