0

だから私は使用方法の主なアイデアを得る

  protected void onSaveInstanceState (Bundle outState)

http://developer.android.com/reference/android/app/Activity.html#onSaveInstanceState(android.os.Bundle)

インスタンス状態の保存を使用した Android アクティビティ状態の保存からも

しかし、私の問題は、アプリケーションが初めて作成された場合はどうなるでしょうか? その場合、以前はバンドルに何も保存されていなかったでしょう....そうであれば、保存されていないバンドルから何かを呼び出そうとすると、何が得られますか?null? たとえば、コードにこれがあります

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    String [] b=savedInstanceState.getStringArray("MyArray");
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);
    String [] a={"haha"};
    savedInstanceState.putStringArray("MyArray", a);
}

アプリケーションが初めて開かれたとき、b の値は何になるでしょうか? アプリケーションが 1 回使用された後、b の値はどうなるでしょうか?

どうもありがとう!

4

2 に答える 2

3

onCreate() に条件を追加します

 if(savedInstanceState==null){
  //meaning no data has been saved yet or this is your first time to run the activity.  Most likely you initialize data here.
 }else{
   String [] b=savedInstanceState.getStringArray("MyArray");
 }

onSaveInstanceState に保存されたデータを取得するには、これをオーバーライドします

 @Override
 protected void onRestoreInstanceState(Bundle savedInstanceState) {
   // TODO Auto-generated method stub
  super.onRestoreInstanceState(savedInstanceState);
}
于 2013-01-30T03:43:53.700 に答える
1

以下のように、常にonCreate()またはonRestoreInstanceState()で null をチェックする必要があります。

String [] b = new String[arraysize];    

   protected void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);      

                  if (savedInstanceState != null)
                  {
                       b = savedInstanceState.getStringArray("MyArray");

                      // Do here for resetting your values which means state before the changes occured.

                  }
                  else{
                          default.. 
                  }

                   Here you do general things.
    }
于 2013-01-30T03:42:17.990 に答える