2017-12-19 14 views
0

ImageSwitcherが画面を回転するときに表示されるImageResourceを変更しないようにする簡単な解決策が見つかりません。 onSaveInstanceState()とonRestoreInstanceState()で別のものを書き込もうとしましたが、動作するものが見つかりませんでした。画面を回転するときにImageSwitcherからImageResourceを保存する方法

どのように私はこの(純粋な擬似コード)のような何かを達成することができます

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 

    // Save UI state changes to the savedInstanceState. 
    // This bundle will be passed to onCreate if the process is 
    // killed and restarted. 
    int picNum = imageSwitcher.getImageResource(); 

    savedInstanceState.putInt("picNum", picNum); 
    // etc. 

    super.onSaveInstanceState(savedInstanceState); 
} 

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 

    super.onRestoreInstanceState(savedInstanceState); 

    // Restore UI state from the savedInstanceState. 
    // This bundle has also been passed to onCreate. 
    Int picNum = savedInstanceState.getString("picNum"); 
    imageSwitcher.setImageResource(picNum); 
} 

を私は正確に表示された画像の名前がわからないので、私は毎回(毎回ImageSwitcherが表示され、それを見つけなければなりません「生の」フォルダからのランダムな画像)。

私がint []の中で、そのIと残油を格納します。

rawClass = R.raw.class; 

fields = rawClass.getFields(); 

rand = new Random(); 

rndInt = rand.nextInt(fields.length); 

resID = fields[rndInt].getInt(rawClass); 

imageSwitcher.setImageResource(resID); 

は私が回避策を見つけ

答えて

0

事前にありがとう:私が使用しているコードの簡易版はこれです

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 

    // Save UI state changes to the savedInstanceState. 
    int randInteger = rndInt; 
    int[] saveArray = imgArr; 
    int picNum = imgArr[currentPhoto]; 

    savedInstanceState.putInt("picNum", picNum); 
    savedInstanceState.putInt("randInteger", randInteger); 
    savedInstanceState.putIntArray("picArr", saveArray); 
    // etc. 

    super.onSaveInstanceState(savedInstanceState); 
} 

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 

    super.onRestoreInstanceState(savedInstanceState); 

    // Restore UI state from the savedInstanceState. 
    // This bundle has also been passed to onCreate. 
    int[] picArr = savedInstanceState.getIntArray("picArr"); 
    int picNum = savedInstanceState.getInt("picNum"); 
    imgArr = picArr; 
    imageSwitcher.setImageResource(picNum); 
} 
:メソッド)私はsaveonSaveInstanceState(にもそれを使用することができるよその後 switcherImageView.setImageResource(imgArr[currentPhoto]);

それを呼び出すことができます

画面をすべて回転させると、ImageSliderで同じ画像が表示されます もう一度クリックすると、どのインデックスでも問題はありません。配列imgArr[0]

EDIT 最終的な解決策が見つかりました! :)私は明らかにインデックスを格納する必要がありました:DOH!:

をので、私は書いた: onSaveInstanceStateでint currentPhoto= indexNumber; savedInstanceState.putInt("currentPhoto", currentPhoto);()メソッドOnRestoreIntanceState()メソッドで と

int photoCurrent = savedInstanceState.getInt("currentPhoto"); 

すべて動作します。

関連する問題