【问题标题】:"java.lang.IllegalArgumentException: No view found for id 0x7f090057 for fragment" - Android Fragment“java.lang.IllegalArgumentException:没有为 id 0x7f090057 找到片段的视图”-Android 片段
【发布时间】:2015-01-02 22:46:00
【问题描述】:

目前正在开发一个应用程序,该应用程序有一个 MainActivity 和一个包含多个按钮的 Fragment。单击按钮时,我无法启动另一个活动。

我在这里一直收到错误提示

java.lang.IllegalArgumentException:未找到 id 0x7f090057 的视图 对于片段

我有两节课; NavigationDrawer 类(我的 MainActivity)

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

这是错误似乎引用的代码(来自 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.fragment_replace, fragment)
                                .commit();

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

        }

我在这里查看了这个问题: https://stackoverflow.com/a/8158916 我看到 R.id.fragment_replace 应该是 R.layout.nav_drawer,这里就是这种情况. 几天前我也发布了一个非常相似的问题,虽然之前应用程序从一开始就会崩溃;现在它在 Button/AlertDialog 点击时崩溃

但是,我不知道要在我的代码中调整什么。 每当我尝试单击来自 StartingFragment.java 和 starting_fragment.xml 的按钮(然后单击随后的 AlertDialog 的中性/肯定按钮)时,我都会收到此错误

Logcat 文本:

01-02 17:16:13.642:E/AndroidRuntime(26814):致命 例外:主要 01-02 17:16:13.642:E/AndroidRuntime(26814):进程: com.fv4.tea.teatime.first, PID: 26814 01-02 17:16:13.642: E/AndroidRuntime(26814): java.lang.RuntimeException: 无法启动 活动 组件信息{com.fv4.tea.teatime.first/com.fv4.teatime.tea.app.OolongTeaActivity}: java.lang.IllegalArgumentException:未找到 id 0x7f090057 的视图 (com.fv4.tea.teatime.first:id/fragment_replace) 用于片段 起始片段{41c95b40 #0 id=0x7f090057} 01-02 17:16:13.642: E/AndroidRuntime(26814):在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2212) 01-02 17:16:13.642: E/AndroidRuntime(26814): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271) 01-02 17:16:13.642: E/AndroidRuntime(26814): 在 android.app.ActivityThread.access$800(ActivityThread.java:144) 01-02 17:16:13.642:E/AndroidRuntime(26814):在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205) 01-02 17:16:13.642: E/AndroidRuntime(26814): 在 android.os.Handler.dispatchMessage(Handler.java:102) 01-02 17:16:13.642:E/AndroidRuntime(26814):在 android.os.Looper.loop(Looper.java:136) 01-02 17:16:13.642: E/AndroidRuntime(26814):在 android.app.ActivityThread.main(ActivityThread.java:5146) 01-02 17:16:13.642:E/AndroidRuntime(26814):在 java.lang.reflect.Method.invokeNative(Native Method) 01-02 17:16:13.642:E/AndroidRuntime(26814):在 java.lang.reflect.Method.invoke(Method.java:515) 01-02 17:16:13.642: E/AndroidRuntime(26814):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796) 01-02 17:16:13.642: E/AndroidRuntime(26814): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612) 01-02 17:16:13.642:E/AndroidRuntime(26814):在 dalvik.system.NativeStart.main(本机方法)01-02 17:16:13.642: E/AndroidRuntime(26814):由以下原因引起: java.lang.IllegalArgumentException:未找到 id 0x7f090057 的视图 (com.fv4.tea.teatime.first:id/fragment_replace) 用于片段 起始片段{41c95b40 #0 id=0x7f090057} 01-02 17:16:13.642: E/AndroidRuntime(26814):在 android.app.FragmentManagerImpl.moveToState(FragmentManager.java:882) 01-02 17:16:13.642: E/AndroidRuntime(26814): 在 android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062) 01-02 17:16:13.642: E/AndroidRuntime(26814): 在 android.app.BackStackRecord.run(BackStackRecord.java:684) 01-02 17:16:13.642:E/AndroidRuntime(26814):在 android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447) 01-02 17:16:13.642: E/AndroidRuntime(26814): 在 android.app.Activity.performStart(Activity.java:5240) 01-02 17:16:13.642:E/AndroidRuntime(26814):在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2178) 01-02 17:16:13.642: E/AndroidRuntime(26814): ... 11 更多

【问题讨论】:

  • 这太奇怪了。我什至检查了OolongTeaActivity,似乎没有任何问题。自从对 NavDrawer 或 StartingFragment 进行更改后,我没有修改过活动
  • 由于您已删除帖子,请移除指向 pastebin 的链接

标签: java android xml android-fragments r.java-file


【解决方案1】:

我刚刚解决了这个问题!我在我所有的课程上都写了extends NavigationDrawer,所以当我把它改成extends Activity时,问题就解决了,现在一切都很顺利。现在一切就绪。

【讨论】:

    【解决方案2】:

    您不能替换静态放置在 xml 布局文件中的片段。您应该在布局中创建一个容器(例如 ViewGroup),然后使用 FragmentTransaction 以编程方式添加片段。

    【讨论】:

    • 我不会替换片段。我只是切换到不同的活动....除非那是同一件事?
    • fragManager.beginTransaction().replace(R.id.fragment_replace, fragment).commit();在这一行中,你替换静态放置在 xml 中的片段。
    • 好的。我懂了。我将以编程方式添加片段,看看是否能解决问题
    • 嗨。我以编程方式添加了片段,但我得到了和以前一样的错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    • 2014-09-02
    • 1970-01-01
    • 2015-04-17
    相关资源
    最近更新 更多