Android 如何保存活动的状态
我有一个如下的活动。在这个活动中,我有10多张图片。使用“下一步”和“上一步”按钮更改图像。我想保存此活动的状态。例如,如果我在第5张图片,并且我关闭了活动或应用程序。现在,当我启动活动或应用程序时,它从第一张图像开始,而不是从第五张图像开始。它应该从我留下的第五张图片开始。请帮助我的代码或编辑我的代码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
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();
}