android - 在添加到 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
不调用生命周期方法。
为了使所有生命周期方法都被调用,我应该怎么做才能正常工作?
解决方案
您好,您可以像下面这样处理 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();
}
推荐阅读
- sql - 如何在 MS SQL 中显示正确的字符?
- sql - Transform duration in seconds to DD HH:MM:SS format (Informix)
- reactjs - change table with checkboxes to "Select" with checkboxes- React.JS
- javafx - Why JavaFX- method .getLayoutBounds().getWidth() returns 0?
- php - Laravel Redirect to Login page after Post Request
- admob - How to add admob banner ads after each 3 video items
- spring - Exception: a bean of type 'org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder' that could not be found
- typescript - Typescript errors depending on order of types in a union type in react-select
- groovy - 在 groovy 中将时间从一个时区转换为另一个时区
- forms - 在 symfony 5 EntityType 中创建自定义选择标签