2017-12-14 31 views
0

URLの画像を読み込むためにimageviewを配置しました。ボタンをクリックすると、次のURLに渡され、画像が変更されます。 問題は、画面を回転させると表示される最初の画像に戻ります。 カウンタをインクリメントしてifを実行しようとしましたが、変数を削除して最初のものに戻ります。 誰かが "次の"変数の値を保存する方法を知っているので、画面が回転するときに値が保存されるか、最後のイメージを保存する別の方法が分かります。 APIのピカソ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/save-android-activity-state-save-instance-state) –

+0

リンクされた質問/回答に記載されているように、あなたの 'proxima'カウンタの値を保持するために' onSaveInstanceState() 'をオーバーライドしたいと思うでしょう'onCreate()'の 'savedInstanceState'バンドルを使ってその値を復元してください。 –

+0

私は変数を保存できませんでしたが、とにかく試しました – gabriel

答えて

1

完全なコードが以前破壊された後、あなたの活動が再作成されたときは、システムがあなたの活動を渡すことをバンドルから保存された状態を回復することができます。 onCreate()およびonRestoreInstanceState()コールバックメソッドは、インスタンス状態情報を含む同じBundleを受け取ります。

システムがアクティビティの新しいインスタンスを作成しているか、前のアクティビティを再作成しているかにかかわらず、onCreate()メソッドが呼び出されるため、読み込む前に状態バンドルがnullかどうかを確認する必要があります。それがヌルの場合、破壊された以前のものを復元するのではなく、アクティビティーの新しいインスタンスが作成されます。

保存し、次の例のように、あなたの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); 
 
}

[保存インスタンスの状態を使用して保存するAndroidのアクティビティの状態](の
+0

変数を保存できなかったのにとにかく試しました – gabriel

関連する問題