2011-01-15 20 views
17

Tôi vừa bắt đầu học lập trình tại android và tôi gặp sự cố khi sử dụng biến số tại onSaveInstanceState. Đây là mã của tôi:cách sử dụng biến trong 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); 
} 

Tôi muốn lưu biến resultCode sử dụng onSaveInstanceState và sau khi nối lại các hoạt động một lần nữa để sử dụng nó ...

(xin lỗi vì trình độ của tôi về tiếng Anh)

+0

Cụ thể hơn, những gì chính xác là vấn đề của bạn? Bạn đã cố gán giá trị cho resultCode chưa. – fiction

+0

Vấn đề của tôi là lưu trạng thái của biến resultCode (switch) thành onSaveInstanceState. Khi tôi viết: savedInstanceState.putInt ("resultCode", resultCode); và sau đó thử sử dụng: int resultCode = savedInstanceState.getInt ("resultCode"); sau đó biến resultCode nó trống – Cyren

Trả lời

5

Cyren ... 1) Tôi không thấy lý do gì để gọi super.onRestoreInstanceState trong onCreate. Nó sẽ làm cho tinh thần để thực hiện cuộc gọi trong phương pháp

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

2) Việc kê khai:

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

được "ẩn" biến:

int resultCode; 

tuyên bố trước đó. Vì vậy, có hai phiên bản của biến resultCode với các phạm vi khác nhau. Có lẽ bạn có nghĩa là để mã:

int resultCode; 

stuff here 

    resultCode = savedInstanceState.getInt("resultCode"); 

Hy vọng rằng sẽ giúp, JAL

Các vấn đề liên quan