Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 导航抽屉以编程方式更改片段_Java_Android_Android Fragments - Fatal编程技术网

Java 导航抽屉以编程方式更改片段

Java 导航抽屉以编程方式更改片段,java,android,android-fragments,Java,Android,Android Fragments,我正在使用导航抽屉编写一个Android应用程序。单击按钮后,我想更改当前的片段 public void btnClick(){ ... changeFragment(); ... } private void changeFragment() { Fragment home = new Home(); FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.rep

我正在使用
导航抽屉编写一个
Android
应用程序。单击按钮后,我想更改当前的
片段

public void btnClick(){
    ...
    changeFragment();
    ...
}

private void changeFragment() {
    Fragment home = new Home();
    FragmentTransaction ft = getFragmentManager().beginTransaction();
    ft.replace(R.id.navigation_drawer, home);
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
    ft.addToBackStack(null);
    ft.commit();
}
我在
LogCat
中收到以下错误:

FATAL EXCEPTION: main
java.lang.UnsupportedOpetaionException: addView(View) is not supported in AdapterView
我的
Home
片段被加载并显示在开头,移动到另一个片段并单击按钮后,我想自动返回
Home
片段

我怎样才能做到这一点

编辑:完整错误日志

06-28 21:19:26.262: E/AndroidRuntime(5023): FATAL EXCEPTION: main
06-28 21:19:26.262: E/AndroidRuntime(5023): Process: com.susu.appclient, PID: 5023
06-28 21:19:26.262: E/AndroidRuntime(5023):     java.lang.UnsupportedOperationException: addView(View) is not supported in AdapterView
06-28 21:19:26.262: E/AndroidRuntime(5023):     at android.widget.AdapterView.addView(AdapterView.java:461)
06-28 21:19:26.262: E/AndroidRuntime(5023):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:968)
06-28 21:19:26.262: E/AndroidRuntime(5023):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1136)
06-28 21:19:26.262: E/AndroidRuntime(5023):     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
06-28 21:19:26.262: E/AndroidRuntime(5023):     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1499)
06-28 21:19:26.262: E/AndroidRuntime(5023):     at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:456)
06-28 21:19:26.262: E/AndroidRuntime(5023):     at android.os.Handler.handleCallback(Handler.java:739)
06-28 21:19:26.262: E/AndroidRuntime(5023):     at android.os.Handler.dispatchMessage(Handler.java:95)
06-28 21:19:26.262: E/AndroidRuntime(5023):     at android.os.Looper.loop(Looper.java:135)
06-28 21:19:26.262: E/AndroidRuntime(5023):     at android.app.ActivityThread.main(ActivityThread.java:5254)
06-28 21:19:26.262: E/AndroidRuntime(5023):     at java.lang.reflect.Method.invoke(Native Method)
06-28 21:19:26.262: E/AndroidRuntime(5023):     at java.lang.reflect.Method.invoke(Method.java:372)
06-28 21:19:26.262: E/AndroidRuntime(5023):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
06-28 21:19:26.262: E/AndroidRuntime(5023):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

如果我理解的话,您正在尝试更改导航抽屉下面的片段,而不是导航抽屉本身(这要复杂得多)

在这方面:

 ft.replace(R.id.navigation_drawer, home);
必须将R.id.navigation\u抽屉替换为应位于activitylayout.xml上的FragmentLayout

比如:

ft.replace(R.id.fragment_layout, home);

其中是您使用的代码
addView(View)
。这就是更改片段的全部代码。使用
changeFragment()
作为注释,应用程序运行流畅。但是,由于我想更改片段,我正在使用上面编写的代码,我的应用程序因我在编辑的完整的
LogCat
中提到的错误而崩溃。谢谢它成功了!需要放置
容器
id。谢谢