Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to use variable in onSaveInstanceState [duplicate]

Tags:

android

I just started learning programming at the android and I have a problem with using variable at onSaveInstanceState. This is my code:

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);
}

I want to save the variable resultCode using onSaveInstanceState and after the resumption of activity once again to use it ...

(sorry for my level of English)

like image 782
Cyren Avatar asked Jan 15 '11 18:01

Cyren


1 Answers

Cyren... 1) I see no reason to call super.onRestoreInstanceState in onCreate. It WOULD make sense to make that call in the method

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

2) The declaration:

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

is "hiding" the variable:

int resultCode;

declared earlier. So there are two version of the variable resultCode with different scopes. Perhaps you mean to code:

int resultCode;

stuff here

    resultCode = savedInstanceState.getInt("resultCode");

Hope that helps, JAL

like image 130
JAL Avatar answered Nov 18 '22 02:11

JAL