调用 popBackStack 后会调用哪个函数?我的意思是,当调用 popBackStack 后某个片段变为活动状态时,将调用哪个函数?我进行了调试,但是在完成某些活动(例如单击按钮等)后会调用 onResume。但是当片段变为活动状态时,我需要通过调用 popBackStack 来调用函数
问问题
1258 次
1 回答
0
我只是有同样的问题,并试图找出在调用 popBackStack 后片段变为活动状态时调用哪个默认方法,但找不到任何调用的默认方法(这里我的意思是默认方法的 onResume、onAttached 等)。
因此,我在调用 popBackStack 之后通过显式调用活动片段的方法来解决这个问题。
例如,假设我们在同一个 Activity 中有两个 Fragment A 和 B,并且在 Fragment A 上单击了 Android 设备的返回按钮。
//fragment A
@Override
public void onResume() {
super.onResume();
getView().setFocusableInTouchMode(true);
getView().requestFocus();
getView().setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) {
// handle back button
FragmentManager fm = getFragmentManager();
fm.popBackStack();
//call fragment B.setBackButtonLister method
B fragment = (B)getFragmentManager().findFragmentByTag(B.TAG);
if (fragment != null){
fragment.setBackButtonListener();
}
return true;
}
return false;
}
});
}
这样就可以在拿到 B 的句柄后调用 Fragment B 的任意方法。
希望这对你有帮助,干杯!
于 2016-04-18T01:18:50.943 回答