目前正在开发一款应用,它的MainActivity包含一个包含多个按钮的片段。单击按钮时,我无法启动其他活动。
我在这里说错误
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&中点击一个按钮(然后点击后面的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
答案 0 :(得分:1)
我刚刚解决了这个问题!我在我的所有课程上都写了extends NavigationDrawer
,所以当我把它改为extends Activity
时,就解决了问题,现在一切都顺利进行了。现在全部设定。
答案 1 :(得分:0)
您无法替换静态放置在xml布局文件中的片段。您应该在布局中创建一个容器(例如ViewGroup),然后使用FragmentTransaction以编程方式添加该片段。