我通过主要活动从片段5到3发送接口:
public void setF3Riddle(int x) {
Frag3 F3 = (Frag3) getSupportFragmentManager().findFragmentById(R.id.Frag3);
if (F3 != null) {
F3.getF3Riddle(x);
} else {
Frag3 frag = new Frag3();
Bundle args = new Bundle();
args.putInt("Value", x);
frag.setArguments(args);
getSupportFragmentManager().beginTransaction()
.replace(R.id.Frag3, frag)
.addToBackStack(null)
.commit();
frag.getF3Riddle(x);
}
}
但是在运行时发送数据时崩溃了。当我将.replace(R.id.Frag3,Frag)
容器更改为另一个不崩溃的片段时,我注意到了这个问题。这有什么问题?
片段3布局:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/Frag3"
tools:context="com.redot.puzzle3.Frag3">
非常感谢您在这件事上的时间和帮助。
答案 0 :(得分:0)
问题可能来自这里:
Frag3 frag = new Frag3();
Bundle args = new Bundle();
args.putInt("Value", x);
frag.setArguments(args);
getSupportFragmentManager().beginTransaction()
.replace(R.id.Frag3, frag)
.addToBackStack(null)
.commit();
frag.getF3Riddle(x);
您正在使用Frag3 frag = new Frag3();
创建片段并放置该分组,然后您希望使用frag.getF3Riddle(x)
获取该值。但它会抛出一个错误,因为片段尚未完成创建。片段创建是异步过程。因此,您需要等到Frag创建完成或首先在另一个地方创建它。