参考文章
重写系统返回键方法onBackPressed()无效(super的位置)
在实现 Android Studio 第一行代码 Page53 的活动生命周期时,重写Back键方法时
返回的Intent的参数 extra_return 在上一个Activity的 onActivityResult() 中中无法接收到
上网搜索后发现与重写的 onBackPressed()的【super.onBackPressed();】有关
原来已经finish过了,
但是logd仍然可以log出来,这里有疑问。
Log.d("SecondActivity", "onBackPressed: finish");
@Override
public void onBackPressed() {
FragmentManager fragmentManager = mFragments.getSupportFragmentManager();
final boolean isStateSaved = fragmentManager.isStateSaved();
if (isStateSaved && Build.VERSION.SDK_INT <= Build.VERSION_CODES.N_MR1) {
// Older versions will throw an exception from the framework
// FragmentManager.popBackStackImmediate(), so we'll just
// return here. The Activity is likely already on its way out
// since the fragmentManager has already been saved.
return;
}
if (isStateSaved || !fragmentManager.popBackStackImmediate()) {
super.onBackPressed();
}
}
public void onBackPressed() {
if (mActionBar != null && mActionBar.collapseActionView()) {
return;
}
FragmentManager fragmentManager = mFragments.getFragmentManager();
if (fragmentManager.isStateSaved() || !fragmentManager.popBackStackImmediate()) {
finishAfterTransition();
}
}
public void finishAfterTransition() {
if (!mActivityTransitionState.startExitBackTransition(this)) {
finish();
}
}
@Override
public void onBackPressed() {
super.onBackPressed(); //去掉就可以了
Log.d("SecondActivity", "onBackPressed: finish");
Intent intent = new Intent();
intent.putExtra("extra_return", "Hello First Activity for Back");
setResult(RESULT_OK, intent);
finish();
}