从片段中按下后退按钮时调用哪个方法

Which method is called when back button is pressed from a fragment

我看过这个问题- Call OnResume when Back Button Pressed when using Fragments

我做了同样的事情,正如答案中提到的,但既没有调用 onResume,也没有调用 onCreateView。这是从 activity 到片段的事务,所有片段都是单个选项卡的一部分。当在第二个片段上按下后退按钮时,如何从第一个片段调用方法?

代码-

Bundle data = new Bundle();
data.putString("q", code);
data.putString("type", type);
data.putString("name", name);

viewPager.setCurrentItem(1);
android.support.v4.app.FragmentTransaction transaction = 
         getSupportFragmentManager().beginTransaction();
eq equity = new eq();
equity.setArguments(data);
transaction.replace(R.id.root_frame, equity).addToBackStack(null).commit();

当你按下后退按钮时调用的方法是 onOptionsItemSelected

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        onBackPressed();
    default:
        return super.onOptionsItemSelected(item);
    }
}

@Override
public void onBackPressed() {
    if (yourCondition = true) {
        //do something here
    } else {
        super.onBackPressed();
    }
}

但是 onOptionsItemSelected 是在父 activity 上调用的。

我不知道是否需要后退按钮,但我认为最好使用接口实现从一个片段到另一个片段的回调,并使用自定义按钮而不是后退按钮。

片段生命周期直接受宿主 activity 生命周期的影响,因此无论如何您都必须考虑到这一点,您是否尝试在 onPuase()onStart() 中调用方法按回键后您要前往的片段?如果这不起作用,请尝试从 if (keyCode == KeyEvent.KEYCODE_BACK) 到达模拟器后退按钮,或者您可以 finish() 上一个片段或 activity 这样后退按钮将使用户不​​知所措并创建您自己的后退按钮后退按钮重定向用户并使用 onClick() 替换其中的方法。 希望对你有用,祝你好运