2011-01-15 4 views
17

私はちょうどアンドロイドでプログラミングを学習し始めましたが、onSaveInstanceStateで変数を使用する際に問題があります。これは私のコードです:onSaveInstanceStateで変数を使用する方法

int resultCode; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    if (savedInstanceState != null) { 
     super.onRestoreInstanceState(savedInstanceState); 

     int resultCode = savedInstanceState.getInt("resultCode"); 
    } 

    Button btnOpenWithResult = (Button) findViewById(R.id.btnOpenWithResult); 
    btnOpenWithResult.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      Intent myIntent = new Intent(flashlight.this, ThirdActivity.class); 
      startActivityForResult(myIntent, 1); 
     } 
    }); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    switch (resultCode) { 
    case 1: 
     /** option 1 */    
     break; 
    case 2: 
     /** option 2 */ 
     break; 
} 

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    savedInstanceState.putInt("resultCode", resultCode); 
    super.onSaveInstanceState(savedInstanceState); 
} 

私はそれを使用するonSaveInstanceStateと活動の再開後に再び使用して変数resultCodeを保存したい...

(私の英語のレベルのために申し訳ありません)

+0

は、具体的に、正確に、あなたの問題は何ですか? resultCodeに値を割り当てようとしましたか? – fiction

+0

私の問題は、変数resultCode(switch)の状態をonSaveInstanceStateに保存することです。私が書くとき:savedInstanceState.putInt( "resultCode"、resultCode);その後、次のコードを試してみてください。int resultCode = savedInstanceState.getInt( "resultCode");変数resultCodeは空です – Cyren

答えて

5

Cyren ... 1)onCreateでsuper.onRestoreInstanceStateを呼び出す理由はありません。

int resultCode = savedInstanceState.getInt("resultCode"); 

変数を "隠し" されています:

int resultCode; 

は前に宣言は宣言は)メソッド

public void onRestoreInstanceState(Bundle saved) { 
    super.onRestoreInstanceState(saved); 

2にその呼び出しを行うために意味をなさないと思います。したがって、異なるスコープを持つ変数resultCodeの2つのバージョンがあります。おそらく、あなたがコードに意味:助け

int resultCode; 

stuff here 

    resultCode = savedInstanceState.getInt("resultCode"); 

希望、 JALを

関連する問題