2015-04-06 31 views
0

我有一個活動,它在onCreate中爲其佈局添加了一個片段。由於方向更改而調用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被調用,片段爲空,所以一個新的MyFragment加到R.id.fragment_container。我期待在方向更改後調用onCreate時的相同場景,但在這種情況下,片段的確不是null。我實際上想知道方位變化時確切發生的情況。

回答

0

當方向改變時,整個屏幕刷新。 Android重新啓動整個運行Activity。發生這種情況時,調用onDestroy(),然後調用onCreate()。你可以通過做幾件事情來照顧方位的變化。處理這種重啓的一種方法是利用onSaveInstanceState()。另一種(更容易)處理此問題的方法是一起禁用方向更改。您可以進入AndroidManifest文件並在活動部分下添加android:screenOrientation="portrait"android:screenOrientation="landscape"

Handling Runtime Changes in Android

相關問題