我有多个片段,我可以在它们之间切换,我的问题是如何在进入backstack之前在片段中执行方法。
如果我在片段OnPause()
或OnStop()
中执行某个方法,我的活动会立即关闭所有片段。从一个片段切换到另一个片段的代码是:
public void switchFrgFromFrg(Fragment fragment, String tag, boolean isAddedToBackStack, int idContainer) {
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.replace(idContainer, fragment, tag);
if (isAddedToBackStack) {
fragmentTransaction.addToBackStack(tag);
}
fragmentTransaction.commit();
}
任何帮助都是相关的。
答案 0 :(得分:1)
只有在调用保留它的活动onResume()
或onPause()
时,才会调用您的片段onResume()
和onPause()
。它们与活动紧密耦合,这就是你的片段关闭的原因。我鼓励你实现一个后退键监听器:
private void doBackActionListener(View view){
view.setFocusableInTouchMode(true);
view.requestFocus();
view.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
//execute code
//then do standart go back action
getActivity().onBackPressed();
return true;
}
}
return false;
}
});
}
您将在onCreateView()
中对此进行调整,并将膨胀的视图作为参数传递。
答案 1 :(得分:0)
如何在片段进入
之前执行片段中的方法backstack
当片段可见时,您可以根据需要执行任意数量的方法
如果我在片段
OnPause()
或OnStop()
中执行某些方法,我的活动会立即关闭所有片段。
这是因为您的代码中出现了一些Exception
。最好在你的问题中显示你的控制台(日志信息)。