如何處理Activity橫豎屏切換時 fragment會新增一個被又new一次的現象
阿新 • • 發佈:2019-01-30
當螢幕發生旋轉,Activity發生重新啟動,依附在Activity中的Fragment也會跟著Activity重新建立;
這樣造成當旋轉的時候,本身存在的Fragment會重新啟動,然後當執行Activity的onCreate時,又會再次例項化一個新的Fragment,這就是出現的原因。
解決辦法:
通過onCreate的引數Bundle savedInstanceState就可以判斷,當前是否發生Activity的重新建立:
預設的savedInstanceState會儲存一些資料,包括Fragment的例項等。
這樣一來無論activity進行多次旋轉都只會有一個Fragment例項在Activity中。
程式碼如下:
public class MainActivity extends Activity { private FragmentOne one; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); Log.d(TAG, savedInstanceState+""); if(savedInstanceState == null) { one= new FragmentOne(); FragmentManager fm = getFragmentManager(); FragmentTransaction tra= fm.beginTransaction(); tra.add(R.id.id_content, one,); tra.commit(); } } }