我尝试在按下硬件后退按钮时从目标片段调用源片段onActivityResult(),并在目标片段类中使用时使用下面的代码进行攻击。在下面提到的代码中获取NPE。
请分享一些建议。
// target fragment
public void backButtonWasPressed() {
Intent intent = new Intent();
// NPE occurs in the below line
getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, intent);
getActivity().getSupportFragmentManager().popBackStack();
}
// main activity
@Override
public void onBackPressed() {
if (sourceFragment != null) {
TargetFragment fragment = new TargetFragment();
fragment.backButtonWasPressed();
} else {
super.onBackPressed();
return;
}
}
答案 0 :(得分:0)
getTargetFragment()
是Fragment
的非静态方法。见here。您需要获取对要返回的片段的实例化的引用。最简单的方法可能是将片段作为参数传递,即
public static void backButtonWasPressed(Fragment frag)
然后致电
frag.getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, intent);