【发布时间】:2017-10-09 03:45:01
【问题描述】:
我创建了一个默认的 android 页面,该页面具有 3 个选项卡和片段管理器,并且我已经添加了 2 个片段,到目前为止一切正常,直到我尝试向主要活动发送接口并从通过捆绑和交易到第三个片段:
像这样:
public void setF4Riddle(int x){
Frag4 F4 =
(Frag4)getSupportFragmentManager().findFragmentById(R.id.frag4);
if (F4 != null ) {
F4.getF4Riddle(x);
} else {
Frag4 fragment = new Frag4();
Bundle args = new Bundle();
args.putInt("Value", x);
TextView Dialog =(TextView)findViewById(R.id.Dialog);
Dialog.setText("");
fragment.setArguments(args);
getSupportFragmentManager().beginTransaction()
.replace(R.id.frag4_container, fragment)
.addToBackStack(null).commit();
fragment.getF4Riddle(x);
}
}
它适用于 Fragment 4(它从 Fragment 5 到 4)但是当我尝试使用 Fragment 3 做同样的事情时它会崩溃(崩溃发生在事务替换中,它不会替换 frag3 布局)事实上我尝试使用 Fragment 2 和 1 在所有情况下游戏都会崩溃(1 ,2 ,3),但是当我添加更多片段(6 和 7)时,它会再次起作用,所以似乎只有前 3 个不起作用,有人知道原因吗?谢谢你
堆栈跟踪:
10-09 00:01:46.985 20690-20690/com.redot.puzzle3 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.redot.puzzle3, PID: 20690
java.lang.IllegalArgumentException: No view found for id 0x7f0d0098 (com.redot.puzzle3:id/frag3) for fragment Frag3{128ae004 #5 id=0x7f0d0098}
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1326)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1574)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1641)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:794)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2415)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2200)
at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2153)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2063)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:725)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6873)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
【问题讨论】:
-
发布您的堆栈跟踪
-
对不起,我是菜鸟,但我是否可以通过在 logcat 中运行带有调试功能的应用程序来获取堆栈跟踪?
-
@Sony 我做到了