我有一个活动,在它的onCreate中为它的布局添加一个片段。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.new_layout);
FragmentManager fm = getSupportFragmentManager();
//R.id.fragment_container refers to a framelayout in R.layout.new_layout
MyFragment fragment = (MyFragment) fm
.findFragmentById(R.id.fragment_container);
if (fragment == null) {
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.fragment_container, new MyFragment());
ft.commit();
}
}
第一次创建活动并调用onCreate时,fragment为null,因此将新的MyFragment添加到R.id.fragment_container。我希望在方向更改后调用onCreate时会出现相同的情况,但在这种情况下,fragment确实不是null。我真的想知道当方向改变时确实发生了。
答案 0 :(得分:0)
当方向改变时,整个屏幕都会刷新。 Android会重新启动整个正在运行的Activity。当发生这种情况时,会调用onDestroy(),然后调用onCreate()。您可以通过做一些事情来处理方向变化。处理此重新启动的一种方法是使用onSaveInstanceState()。另一种(更容易)处理此问题的方法是一起禁用方向更改。您可以通过访问AndroidManifest文件并在活动部分下添加android:screenOrientation="portrait"
或android:screenOrientation="landscape"
来完成此操作。