" java.lang.IllegalArgumentException:找不到片段"的ID为0x7f090057的视图 - Android Fragment

时间:2015-01-02 22:46:01

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

目前正在开发一款应用,它的MainActivity包含一个包含多个按钮的片段。单击按钮时,我无法启动其他活动。

我在这里说错误

  

java.lang.IllegalArgumentException:找不到id 0x7f090057的视图   对于片段   Logcat view for Error

我有两节课; 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&中点击一个按钮(然后点击后面的AlertDialog的中性/正面按钮)时,我就会收到此错误。 starting_fragment.xml

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:无法启动   活动   ComponentInfo {com.fv4.tea.teatime.first / com.fv4.teatime.tea.app.OolongTeaActivity}:   java.lang.IllegalArgumentException:找不到id 0x7f090057的视图   片段的(com.fv4.tea.teatime.first:id / fragment_replace)   StartingFragment {41c95b40#0 id = 0x7f090057} 01-02 17:16:13.642:   E / AndroidRuntime(26814):at   android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2212)   01-02 17:16:13.642:E / AndroidRuntime(26814):at   android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271)   01-02 17:16:13.642:E / AndroidRuntime(26814):at   android.app.ActivityThread.access $ 800(ActivityThread.java:144)01-02   17:16:13.642:E / AndroidRuntime(26814):at   android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1205)   01-02 17:16:13.642:E / AndroidRuntime(26814):at   android.os.Handler.dispatchMessage(Handler.java:102)01-02   17:16:13.642:E / AndroidRuntime(26814):at   android.os.Looper.loop(Looper.java:136)01-02 17:16:13.642:   E / AndroidRuntime(26814):at   android.app.ActivityThread.main(ActivityThread.java:5146)01-02   17:16:13.642:E / AndroidRuntime(26814):at   java.lang.reflect.Method.invokeNative(Native Method)01-02   17:16:13.642:E / AndroidRuntime(26814):at   java.lang.reflect.Method.invoke(Method.java:515)01-02 17:16:13.642:   E / AndroidRuntime(26814):at   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:796)   01-02 17:16:13.642:E / AndroidRuntime(26814):at   com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)01-02   17:16:13.642:E / AndroidRuntime(26814):at   dalvik.system.NativeStart.main(Native Method)01-02 17:16:13.642:   E / AndroidRuntime(26814):引起:   java.lang.IllegalArgumentException:找不到id 0x7f090057的视图   片段的(com.fv4.tea.teatime.first:id / fragment_replace)   StartingFragment {41c95b40#0 id = 0x7f090057} 01-02 17:16:13.642:   E / AndroidRuntime(26814):at   android.app.FragmentManagerImpl.moveToState(FragmentManager.java:882)   01-02 17:16:13.642:E / AndroidRuntime(26814):at   android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)   01-02 17:16:13.642:E / AndroidRuntime(26814):at   android.app.BackStackRecord.run(BackStackRecord.java:684)01-02   17:16:13.642:E / AndroidRuntime(26814):at   android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447)   01-02 17:16:13.642:E / AndroidRuntime(26814):at   android.app.Activity.performStart(Activity.java:5240)01-02   17:16:13.642:E / AndroidRuntime(26814):at   android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2178)   01-02 17:16:13.642:E / AndroidRuntime(26814):... 11 more

2 个答案:

答案 0 :(得分:1)

我刚刚解决了这个问题!我在我的所有课程上都写了extends NavigationDrawer,所以当我把它改为extends Activity时,就解决了问题,现在一切都顺利进行了。现在全部设定。

答案 1 :(得分:0)

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