从片段中按下后退按钮时调用哪个方法
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()
替换其中的方法。
希望对你有用,祝你好运
我看过这个问题- 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()
替换其中的方法。
希望对你有用,祝你好运