2016-08-02 2 views
1

Я использую onSaveInstanceState и onRestoreInstanceState, чтобы сохранить позицию изображения в массиве после действия перезапуска. Но это не сработает - после того, как массив активности перезагрузки снова заработает, в чем проблема?Почему мой массив работает заново после перезапуска?

int[] array_images = { 
      R.drawable.p_orange, 
      R.drawable.p_banana, 
      R.drawable.p_apple, 
    }; 
    int index = -1; 
private void updateImage() 
    { 
    index++; 
    if(index >= array_images.length) 
     index = 0; 
    ImageView imageView = (ImageView) findViewById(R.id.imageView); 
    imageView.setImageResource(array_images[index]); 
    } 

@Override 
    public void onSaveInstanceState(Bundle outState) { 

    outState.putIntArray("array_images", array_images); 

    super.onSaveInstanceState(outState); 

    } 
    @Override 
    public void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    array_images = savedInstanceState.getIntArray("array_images"); 

    } 
btnNext.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      dialog.dismiss(); 
      finish(); 
      startActivity(getIntent()); 
      updateImage(); 
     } 

     }); 
+1

После восстановления массива вызовите 'updateImage()'. –

ответ

2

В onRestoreInstanceState(Bundle savedInstanceState) только значения будут восстановлены, но ваши мнения будут воссозданы. Таким образом, вы должны установить все значения в представления после восстановления значений в onRestoreInstanceState(Bundle savedInstanceState), или даже вы можете сделать это в onCreate(), вы также получите сохраненный пакет в onCreate().

+0

Извините, в каком порядке я должен писать этот код? –

+0

после 'setContentView()' в oncreate(), вы можете проверить, является ли пакет равным null, а если он не равен null, присвойте значение из пакета в ваш массив. –