1. 程式人生 > >如何處理Activity橫豎屏切換時 fragment會新增一個被又new一次的現象

如何處理Activity橫豎屏切換時 fragment會新增一個被又new一次的現象

當螢幕發生旋轉,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();  
        }  
          
          
  
    }  

}