在 Android 12 中,需要在引导屏结束之后才初始化 Fragment。为了在引导屏结束后进行 Fragment 初始化,可以使用 ViewTreeObserver 的 OnPreDrawListener 接口,监听视图树的绘制回调,在回调中进行 Fragment 初始化操作。
示例代码:
public class MainActivity extends AppCompatActivity {
private View rootView;
private Fragment fragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 设置引导屏
setContentView(R.layout.activity_splash_screen);
// 获取根视图
rootView = findViewById(R.id.splash_root_view);
// 在视图树绘制完成后初始化 Fragment
rootView.getViewTreeObserver().addOnPreDrawListener(
new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
rootView.getViewTreeObserver().removeOnPreDrawListener(this);
initFragment();
return true;
}
});
}
// Fragment 初始化操作
private void initFragment() {
fragment = new MyFragment();
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.add(R.id.container, fragment);
transaction.commit();
}
}