Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何保存活动的状态_Android_Save_State - Fatal编程技术网

Android 如何保存活动的状态

Android 如何保存活动的状态,android,save,state,Android,Save,State,我有一个如下的活动。在这个活动中,我有10多张图片。使用“下一步”和“上一步”按钮更改图像。我想保存此活动的状态。例如,如果我在第5张图片,并且我关闭了活动或应用程序。现在,当我启动活动或应用程序时,它从第一张图像开始,而不是从第五张图像开始。它应该从我留下的第五张图片开始。请帮助我的代码或编辑我的代码 int[] images = { R.drawable.r1, R.drawable.r2, R.drawable.r3, R.drawable.r4, R.drawable.r5, R.dr

我有一个如下的活动。在这个活动中,我有10多张图片。使用“下一步”和“上一步”按钮更改图像。我想保存此活动的状态。例如,如果我在第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]);
    }
     };
请建议使用代码。

尝试使用SharedReferences来存储您最后的图像位置

在onPause方法中:

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

上述建议可能有效,但方法是使用活动的- onSaveInstanceState和onRestoreInstanceState。您可以在中查看示例:

或者阅读android的手册:


主要优点是,只有在真正需要时才保存这些值。

尝试使用SharedReferences存储图像的最后位置。感谢回复。请你编辑我的代码。我不是软件开发人员。您好,亲爱的。在某些情况下,无法调用onStop,因此您无法在其中编写此代码。@Haresh Chhelana您好,为什么不调用onStop?在有些情况下,你不能给我打电话,你能告诉我这些情况吗?根据android doc,它总是被调用。当系统内存不足时,则不会调用onStop。@Haresh Chhelana抱歉,但在任何情况下都会调用它,因为如果活动位于前台,则如果它位于后台,则不会被终止。非常感谢。它工作得很好。再次感谢。
 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]);
    }
     };
@Override
protected void onPause(){
    super.onPause();
    SharedPreferences settings = getSharedPreferences("imageNumber", 0);
    SharedPreferences.Editor editor = settings.edit();
    editor.putInt("lastImage",currentImage  );
    editor.commit();
}