2016-09-28 79 views
0

我有多个片段,我可以在它们之间切换,我的问题是如何在片段执行片段之前执行方法。 如果我在片段的OnPause()OnStop()中执行某种方法,我的活动将立即关闭所有片段。从一个片段切换到另一个的代码是:执行片段之前的方法将片段放入backstack

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(); 
    } 

任何帮助都是有效的。

回答

1

仅当调用保存它的活动onResume()onPause()时,才会调用片段onResume()onPause()。它们与活动紧密结合,这就是为什么你的片段正在关闭。我sugest你TI实现一个返回键监听器:

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() CAL这一点,并通过充气视图参数。

0

我怎么能在一个片段执行方法,它关系到backstack

之前,当你片段可见,只要你想

如果我执行了一些你可以执行许多方法方法在片段的OnPause()OnStop()我的活动即刻关闭所有片段。

这是因为有些Exception出现在您的代码中。最好在你的问题中显示你的控制台(日志消息)。

+0

我正在尝试执行Retrofit 2异步调用,它运行时没有任何异常,但我的活动正在关闭 –

+0

您需要用导致问题的那段代码更新代码 –