首页 > 解决方案 > 在添加到 android.R.id.content 的 Fragment 中不调用 onStop

问题描述

我正在添加片段android.R.id.content,以便使用以下代码填充 Activity 的空间。

private void doFragmentTransaction(Fragment fragment, String tag) {
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    transaction.setCustomAnimations(R.anim.slide_in_bottom_y, R.anim.slide_out_bottom_y,
        R.anim.slide_in_bottom_y, R.anim.slide_out_bottom_y);
    transaction.add(android.R.id.content, fragment, tag);
    transaction.addToBackStack(tag);
    transaction.commitAllowingStateLoss();
}

而且我有一个问题要抓住片段通过按下后退按钮关闭的那一刻。onStop不调用生命周期方法。

为了使所有生命周期方法都被调用,我应该怎么做才能正常工作?

标签: androidandroid-fragmentsfragment

解决方案


您好,您可以像下面这样处理 onBackPressed() 活动

  @Override
public void onBackPressed() {
    if (getSupportFragmentManager().getBackStackEntryCount() > 1) {
        val frag = getSupportFragmentManager().findFragmentById(android.R.id.container);
        if (frag is HomeFragment) {
            Fragment currentFragment = (HomeFragment) frag;
            //do your code
            return
        }
    }
    super.onBackPressed();
}

推荐阅读