findFragmentByID()在创建后立即使用容器ID返回null

时间:2014-05-22 10:11:29

标签: android android-fragments

注意我已经检查了非常这个问题的大量“重复”,但没有一个符合该法案,所以请不要将其标记为重复。

我修改了默认向导创建的应用程序(在Android Studio中),尝试在创建后找到占位符片段,如下所示(添加的唯一语句是Log行):

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment())
                .commit();
    }

    Log.d("", "Found fragment: " + getSupportFragmentManager().findFragmentById(R.id.container));
}

然而,日志只会打印出来:

  

找到片段:null

根据我所读到的文档和类似问题的答案,它应该有效。发生了什么事?

1 个答案:

答案 0 :(得分:2)

片段事务尚未执行,但只是安排稍后执行。

在应用程序生命周期中等待super.onStart(),如果您不耐烦,请致电executePendingTransactions()