FragmentManager.findFragmentByTag == null ?
来源:6-1 Activity 的启动流程是怎样的?

AndroidHunter
2019-12-13
public class MainActivity extends FragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
Button btn = findViewById(R.id.button1);
btn.setOnClickListener(v -> {
with();
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}
with();
});
}
public void with() {
FragmentManager fm = this.getSupportFragmentManager();
Fragment fragment = fm.findFragmentByTag("abc");
if (fragment == null) {
Log.i("hunter", "这一行执行了两次");
fragment = new Fragment();
fm.beginTransaction().add(fragment, "abc").commitAllowingStateLoss();
}
}
}
老师,上面的代码new Fragment()怎么执行了两次,第一次添加Fragment的时候设置了tag呀
写回答
1回答
-
因为fragment添加不是同步的,第一个with调用完以后你阻塞了主线程,所以fragment根本没有办法真正添加。
292019-12-14
相似问题