我可以依赖savedInstanceState!= null来将片段添加到布局中

时间:2014-04-19 17:51:11

标签: android android-fragments

android开发人员教程(代码beloew)只在savedInstanceState != null时将片段添加到布局中。

表示始终未将savedInstanceState == null片段添加到布局,以及何时始终将savedInstanceState != null片段添加到布局中。

为什么我可以依赖它?我找不到与savedInstanceState的直接关系,以及是否将片段添加到布局中。

我正在谈论的代码:

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

public class MainActivity extends FragmentActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.news_articles);

        if (findViewById(R.id.fragment_container) != null) {

            // However, if we're being restored from a previous state,
            // then we don't need to do anything and should return or else
            // we could end up with overlapping fragments.

            // *** question: I don't understand the comment above. (described in my question)
            if (savedInstanceState != null) {
                return;
            }

            HeadlinesFragment firstFragment = new HeadlinesFragment();
            firstFragment.setArguments(getIntent().getExtras());
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.fragment_container, firstFragment).commit();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

Fragments会自动附加到活动。如果添加它,则无需再次添加。 Android会自行完成。

如果savedInstanceState中的onCreate捆绑包不为空,则会重新创建您的活动(可能是因为内存较低而更改了方向或Android杀死了您的应用程序)并且您不需要再次附加片段。

当然这取决于不同的情况。有时您需要在每次活动更改方向时在onCreate中添加不同的片段。然后你不需要使用那张支票。