縦画面切り替え保存データ


縦画面切り替え時にActivityがDestroyされ、再作成されるため、必要なデータが再ロードされます.これを解決するには、onRestoreNonConfigrationInstance()メソッドに必要なオブジェクトを保持し、縦画面切り替え時にこのメソッドが呼び出され、Activityが再作成されるまでgetLastNonConfigrationInstance()メソッドでObjectが取得されます.

  
  
  
  
  1. public class Android_testActivity extends Activity {  
  2.     /** Called when the activity is first created. */  
  3.     TextView textView;  
  4.     Drawable drawable;  
  5.     @Override  
  6.     public void onCreate(Bundle savedInstanceState) {  
  7.         super.onCreate(savedInstanceState);  
  8.         setContentView(R.layout.main);  
  9.         textView = (TextView)findViewById(R.id.text);  
  10.         drawable = (Drawable)getLastNonConfigurationInstance();  
  11.         if (drawable == null) {  
  12.             drawable = getResources().getDrawable(R.drawable.icon);  
  13.             Log.e("Android_test", "drawable is null");  
  14.         }  
  15.         textView.setBackgroundDrawable(drawable);  
  16.     }  
  17.     @Override  
  18.     public Object onRetainNonConfigurationInstance() {  
  19.         // TODO Auto-generated method stub  
  20.         return drawable;  
  21.     }  
  22.       
  23.       
  24.       
  25.     public void onDestroy(){  
  26.         super.onDestroy();  
  27.         Log.e("Android_test", "Destroy");  
  28.     }