从 NavigationDrawer 部分打开子片段
Open child fragment from NavigationDrawer Section
我正在尝试从导航抽屉的片段中打开子片段。请看下面的图片,以便更好地理解我。
代码:
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
fragmentTransaction.replace(R.id.fragment_container, new ChatFragment(), MainActivity.CHAT_FRAGMENT_TAG);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
错误调试:
java.lang.IllegalArgumentException: No view found for id 0x7f0b0072 (com.epiccode.enjoytheplace:id/fragment_container) for fragment ChatFragment{4211cf20 #1 id=0x7f0b0072 CHAT_FRAGMENT}
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:882)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)
at android.app.BackStackRecord.run(BackStackRecord.java:684)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447)
at android.app.FragmentManagerImpl.run(FragmentManager.java:443)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5146)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)
at dalvik.system.NativeStart.main(Native Method)
注意:我正在使用 neokree navigation drawer
提前致谢。
我假设您将该代码放在 Navigation Drawer 片段中,当然它不包含其中的 'fragment_container' 视图。
您必须调用activity方法,传递要打开的片段的编号或名称,例如:
((MainActivity) getActivity()).switchFragment(1);
其中 switchFragment 类似于:
public void switchFragment(int position) {
switch (position) {
case (1):
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
fragmentTransaction.replace(R.id.fragment_container, new ChatFragment(), MainActivity.CHAT_FRAGMENT_TAG);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
break;
.....
}
}
我正在尝试从导航抽屉的片段中打开子片段。请看下面的图片,以便更好地理解我。
代码:
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
fragmentTransaction.replace(R.id.fragment_container, new ChatFragment(), MainActivity.CHAT_FRAGMENT_TAG);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
错误调试:
java.lang.IllegalArgumentException: No view found for id 0x7f0b0072 (com.epiccode.enjoytheplace:id/fragment_container) for fragment ChatFragment{4211cf20 #1 id=0x7f0b0072 CHAT_FRAGMENT}
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:882)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)
at android.app.BackStackRecord.run(BackStackRecord.java:684)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447)
at android.app.FragmentManagerImpl.run(FragmentManager.java:443)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5146)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)
at dalvik.system.NativeStart.main(Native Method)
注意:我正在使用 neokree navigation drawer 提前致谢。
我假设您将该代码放在 Navigation Drawer 片段中,当然它不包含其中的 'fragment_container' 视图。
您必须调用activity方法,传递要打开的片段的编号或名称,例如:
((MainActivity) getActivity()).switchFragment(1);
其中 switchFragment 类似于:
public void switchFragment(int position) {
switch (position) {
case (1):
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
fragmentTransaction.replace(R.id.fragment_container, new ChatFragment(), MainActivity.CHAT_FRAGMENT_TAG);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
break;
.....
}
}