2014-09-26 2 views
0

У меня есть активность, как показано ниже. В этом упражнении у меня более 10 изображений. Смена изображений осуществляется с помощью кнопок «Назад» и «Назад». Я хочу сохранить состояние этой активности. Например, если я на пятом изображении, и я закрыл действие или приложение. Теперь, когда я запускаю действие или приложение, он начинается с 1-го изображения, а не с 5-го изображения. Он должен начинаться с 5-го изображения, где я его оставил. Пожалуйста, помогите мне с кодом или отредактируйте мой код.Как сохранить статус деятельности

int[] images = { R.drawable.r1, R.drawable.r2, R.drawable.r3, R.drawable.r4, R.drawable.r5, R.drawable.r6, R.drawable.r7, R.drawable.r8, R.drawable.r9, R.drawable.r10 /// so on}; 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

    hImageViewPic = (ImageView)findViewById(R.id.idImageViewPic); 
    iButton = (Button) findViewById(R.id.bNext); 
    gButton = (Button) findViewById(R.id.bPrev); 
     //Just set one Click listener for the image 
    iButton.setOnClickListener(iButtonChangeImageListener); 
    gButton.setOnClickListener(gButtonChangeImageListener); 
    } 
    View.OnClickListener iButtonChangeImageListener = new OnClickListener() { 
     public void onClick(View v) { 
    //Increase Counter to move to next Image 
     currentImage++; 
     currentImage = currentImage % images.length; 
     hImageViewPic.setImageResource(images[currentImage]); 
     } 
    }; 
    View.OnClickListener gButtonChangeImageListener = new OnClickListener() { 
    public void onClick(View v) { 
    //Increase Counter to move to next Image 
    currentImage--; 
    currentImage = (currentImage + images.length) % images.length; 
    hImageViewPic.setImageResource(images[currentImage]); 
    } 
    }; 

Просьба с кодом.

+0

попытайтесь использовать SharedPreferences для сохранения последней позиции изображения. –

+0

Спасибо. Не стесняйтесь редактировать мой код. Я не разработчик программного обеспечения. – margino

ответ

0
int currentImage; 
    int[] images = { R.drawable.r1, R.drawable.r2, R.drawable.r3, R.drawable.r4, R.drawable.r5, R.drawable.r6, R.drawable.r7, R.drawable.r8, R.drawable.r9, R.drawable.r10 /// so on}; 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

    SharedPreferences settings = this.getSharedPreferences("imageNumber", 0); 
    if(settings != null){ 
      currentImage= settings .getInt("lastImage", 0); 
    } 
    hImageViewPic = (ImageView)findViewById(R.id.idImageViewPic); 
    iButton = (Button) findViewById(R.id.bNext); 
    gButton = (Button) findViewById(R.id.bPrev); 
     //Just set one Click listener for the image 
    iButton.setOnClickListener(iButtonChangeImageListener); 
    gButton.setOnClickListener(gButtonChangeImageListener); 
    } 
    View.OnClickListener iButtonChangeImageListener = new OnClickListener() { 
     public void onClick(View v) { 
    //Increase Counter to move to next Image 
     currentImage++; 
     currentImage = currentImage % images.length; 
     hImageViewPic.setImageResource(images[currentImage]); 
     } 
    }; 
    View.OnClickListener gButtonChangeImageListener = new OnClickListener() { 
    public void onClick(View v) { 
    //Increase Counter to move to next Image 
    currentImage--; 
    currentImage = (currentImage + images.length) % images.length; 
    hImageViewPic.setImageResource(images[currentImage]); 
    } 
    }; 

по методу OnPause:

@Override 
protected void onPause(){ 
    super.onPause(); 
    SharedPreferences settings = getSharedPreferences("imageNumber", 0); 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.putInt("lastImage",currentImage ); 
    editor.commit(); 
} 
+0

Здравствуйте, дорогой, в некоторых случаях onStop() не вызывается, поэтому вы не можете писать этот код в нем. –

+0

@Haresh Chhelana привет, почему onStop не называется? 'в некоторых случаях onStop() не называть' вы можете рассказать мне эти случаи? согласно android doc, он всегда называется. – mmlooloo

+0

, когда система неактивна в памяти, а затем onStop() не вызывается. –

0

Попробуйте использовать SharedPreferences, чтобы сохранить последнее положение изображения.

private ImageView hImageViewPic; 
    private Button iButton; 
    private Button gButton; 

    private SharedPreferences sharedPreferences; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     hImageViewPic = (ImageView) findViewById(R.id.idImageViewPic); 
     iButton = (Button) findViewById(R.id.bNext); 
     gButton = (Button) findViewById(R.id.bPrev); 

     sharedPreferences = getSharedPreferences(getString(R.string.app_name), MODE_PRIVATE); 

     hImageViewPic.setImageResource(images[sharedPreferences.getInt("LastSeenImagePosition", 0)]); 
     //Just set one Click listener for the image 
     iButton.setOnClickListener(iButtonChangeImageListener); 
     gButton.setOnClickListener(gButtonChangeImageListener); 
    } 
    View.OnClickListener iButtonChangeImageListener = new OnClickListener() { 
     public void onClick(View v) { 
      //Increase Counter to move to next Image 
      currentImage++; 
      currentImage = currentImage % images.length; 
      hImageViewPic.setImageResource(images[currentImage]); 
      SharedPreferences.Editor editor = sharedPreferences.edit(); 
      editor.putBoolean("LastSeenImagePosition", currentImage); 
      editor.commit(); 
     } 
    }; 
    View.OnClickListener gButtonChangeImageListener = new OnClickListener() { 
     public void onClick(View v) { 
      //Increase Counter to move to next Image 
      currentImage--; 
      currentImage = (currentImage + images.length) % images.length; 
      hImageViewPic.setImageResource(images[currentImage]); 
      SharedPreferences.Editor editor = sharedPreferences.edit(); 
      editor.putBoolean("LastSeenImagePosition", currentImage); 
      editor.commit(); 
     } 
    }; 
0

Предложения выше могут работать, но способ сделать это с помощью деятельности в - onSaveInstanceState и onRestoreInstanceState. Вы можете посмотреть на пример в: Saving Android Activity state using Save Instance State

Или читайте в руководстве андроида: http://developer.android.com/reference/android/app/Activity.html#onSaveInstanceState(android.os.Bundle)

Основное преимущество заключается в том, что значения сохраняются только тогда, когда действительно необходимо.

Смежные вопросы