2011-01-15 17 views
17

Właśnie zacząłem uczyć się programowania na Androidzie i mam problem z używaniem zmiennej pod numerem onSaveInstanceState. To jest mój kod:jak używać zmiennej w 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); 
} 

chcę zapisać zmienna resultCode użyciu onSaveInstanceState i po wznowieniu działalności ponownie z niego korzystać ...

(przepraszam za mój poziom języka angielskiego)

+0

dokładniej, co dokładnie jest problem? Czy próbowałeś przypisać wartość do resultCode. – fiction

+0

Mój problem polega na zapisaniu stanu zmiennej resultCode (switch) do onSaveInstanceState. Kiedy piszę: savedInstanceState.putInt ("resultCode", resultCode); a następnie spróbuj użyć: int resultCode = savedInstanceState.getInt ("resultCode"); następnie zmienna resultCode jest pusta – Cyren

Odpowiedz

5

Cyren ... 1) Nie widzę powodu, aby wywoływać super.onRestoreInstanceState w onCreate. Wydaje się rozsądne, aby to wezwanie w metodzie

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

2) oświadczenie:

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

jest "ukrywanie" zmienną:

int resultCode; 

zadeklarowanej wcześniej. Istnieją dwie wersje zmiennej resultCode z różnymi zakresami. Może oznaczać kodu:

int resultCode; 

stuff here 

    resultCode = savedInstanceState.getInt("resultCode"); 

nadzieję, że pomoże, JAL

Powiązane problemy