Ale*_*lex 1 android android-fragments
我的应用程序中有父片段和对话框片段。单击按钮父片段打开对话框片段。这是我的 ParentFragment 类。
public class ParentFragment extends Fragment {
........
........
public class ButtonClickListener implements View.OnClickListener{
@Override
public void onClick(View v) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
Fragment prev = getFragmentManager().findFragmentByTag("dialog");
if (prev != null) {
ft.remove(prev);
}
MyDialogFragment newFragment = new MyDialogFragment();
newFragment.setTargetFragment(ParentFragment.this, 0);
newFragment.show(getFragmentManager(), "dialog");
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是 MyDialogFragment 类
public class MyDialogFragment extends DialogFragment {
..........
public MyDialogFragment() {
parentFragment = (ParentFragment)getTargetFragment();
}
...........
...........
}
Run Code Online (Sandbox Code Playgroud)
当 MyDialogFragment 类中的 getTargetFragment 总是返回 null 时。
检查您的命令序列
MyDialogFragment newFragment = new MyDialogFragment(); // line 1
newFragment.setTargetFragment(ParentFragment.this, 0); // line 2
Run Code Online (Sandbox Code Playgroud)
在这里,您首先要创建一个新的 MyDialogFragment 对象。请记住此命令(第 1 行)将调用 MyDialogFragment 的构造函数。在此之后,您将设置目标片段(第 2 行)。
如果你看看你的 dialogFragment,
public MyDialogFragment() {
parentFragment = (ParentFragment)getTargetFragment();
}
Run Code Online (Sandbox Code Playgroud)
您正在尝试访问构造函数中的目标片段。因此目标片段将始终为空,因为您是在第 2 行中调用构造函数之后分配它的。尝试从其他方法访问它或将其作为参数传递给构造函数(这不是一个好习惯)。
| 归档时间: |
|
| 查看次数: |
3421 次 |
| 最近记录: |