2017-12-14 14 views
0

URL의 이미지를로드하기 위해 imageview를 놓았습니다. 버튼을 클릭하면 다음 url로 전달되어 이미지가 변경됩니다. 문제는 화면을 회전하면 표시된 첫 번째 이미지로 돌아갑니다. 증가 카운터를 사용하여 if를 시도했지만 변수를 삭제하고 첫 번째 카운터로 다시 돌아갑니다. 누군가 "다음"변수의 값을 저장하는 방법을 알고 있으므로 화면이 회전 할 때 값을 저장 한 채로 유지하거나 마지막 이미지를 저장하는 또 다른 방법을 알고 있습니다. 당신의 활동이 이전에 파괴 된 후에는 시스템이 활동을 전달하는 번들에서 저장된 상태를 복구 할 수 있습니다 다시 만들어집니다int 변수가 화면 회전과 함께 저장되지 않습니다.

private SmartImageView smartImage; 

private Button btn; 
private int proxima = 0; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_redacao_nota_1000); 

    if (proxima == 0) { 
     smartImage = (SmartImageView) findViewById(R.id.meuSmartImage); 
     smartImage.setImageUrl("http://gabrielmartins70.000webhostapp.com/bao.png"); 
     proxima++; 

    } 

    btn = (Button) findViewById(R.id.button18); 
    btn.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      if (proxima == 1) { 
       smartImage.setImageUrl("http://gabrielmartins70.000webhostapp.com/2.png"); 
      } 
     } 
    }); 


}} 
+1

가능한 중복 https://stackoverflow.com/questions/151777/saving-android-activity-state-using-save-instance-state) –

+0

링크 된 질문/답변에서 언급했듯이,'proxima' 카운터의 값을 유지하기 위해'onSaveInstanceState()'를 오버라이드하고 싶을 것입니다 , 그리고 나서'savedInstanceState' 번들을'onCreate()'에서 사용하여 값을 복원하십시오. –

+0

변수를 저장할 수는 없지만 어쨌든 시도했습니다. – gabriel

답변

1

완전한 API를 피카소

코드입니다. onCreate() 및 onRestoreInstanceState() 콜백 메서드는 모두 인스턴스 상태 정보가 들어있는 동일한 번들을받습니다.

시스템이 활동의 ​​새 인스턴스를 작성 하든지 이전 활동을 재 작성하는지에 관계없이 onCreate() 메소드가 호출되기 때문에 읽기 전에 상태 번들이 널인지 여부를 확인해야합니다. 그것이 널이면, 시스템은 이전에 파기 된 것을 복원하는 대신에 활동의 새 인스턴스를 작성 중입니다.

저장 다음의 예처럼 INT 변수를 수행합니다

static final String STATE_USER = "user"; 
 
private String mUser; 
 

 
@Override 
 
protected void onCreate(Bundle savedInstanceState) { 
 
    super.onCreate(savedInstanceState); 
 
    // Check whether we're recreating a previously destroyed instance 
 
    if (savedInstanceState != null) { 
 
     // Restore value of members from saved state 
 
     mUser = savedInstanceState.getString(STATE_USER); 
 
    } else { 
 
     // Probably initialize members with default values for a new instance 
 
     mUser = "NewUser"; 
 
    } 
 
} 
 

 
@Override 
 
public void onSaveInstanceState(Bundle savedInstanceState) { 
 
    savedInstanceState.putString(STATE_USER, mUser); 
 
    // Always call the superclass so it can save the view hierarchy state 
 
    super.onSaveInstanceState(savedInstanceState); 
 
}

[저장 인스턴스 상태를 사용하여 저장 안드로이드 활동 상태 (의
+0

변수를 저장할 수 없었지만 어쨌든 시도했습니다. – gabriel