在目标片段android中按下硬件时调用sourcefragment的onactivity结果

时间:2017-03-29 13:43:02

标签: android android-fragments onbackpressed

我尝试在按下硬件后退按钮时从目标片段调用源片段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;
    }        
}

1 个答案:

答案 0 :(得分:0)

getTargetFragment()Fragment的非静态方法。见here。您需要获取对要返回的片段的实例化的引用。最简单的方法可能是将片段作为参数传递,即

public static void backButtonWasPressed(Fragment frag)

然后致电

frag.getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, intent);