我的应用程序应该首先显示图像,当按下按钮时,另一图像显示在图像视图中。但是,当屏幕旋转时,imageView会显示旧图像。我应该如何解决这个问题? (位是装入的ImageView上创建位图)Android Imageview在屏幕旋转后显示旧位图
我的代码如下:
RGBToBitmap(rgb.getWindow(), bits); //this loads a new image into bits
imageView.setImageBitmap(bits);
我的应用程序应该首先显示图像,当按下按钮时,另一图像显示在图像视图中。但是,当屏幕旋转时,imageView会显示旧图像。我应该如何解决这个问题? (位是装入的ImageView上创建位图)Android Imageview在屏幕旋转后显示旧位图
我的代码如下:
RGBToBitmap(rgb.getWindow(), bits); //this loads a new image into bits
imageView.setImageBitmap(bits);
我想你要设置在OnCreate您的ImageView或你的活动OnStart方法的第一张图像。
旋转屏幕后,onCreate和onStart方法会再次被调用,因此ImageView会再次显示第一个图像。
为了节省您的活动状态,看看这个: http://developer.android.com/reference/android/app/Activity.html#SavingPersistentState
这可能是一个可能的解决方案:
Bitmap image = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
image = (Bitmap) getLastNonConfigurationInstance();
if(bitmap == null){
image = downloadImage();
}
setImage(bitmap);
}
@Override
public Object onRetainNonConfigurationInstance() {
return bitmap;
}
您也可以使用片段UR当读取到这个方法:
Fragment.setRetainInstance
还是捆绑:(的onSaveInstanceState(捆绑)也可以在你的Activity)
//Save it onSaveInstanceState:
@Override
public void onSaveInstanceState(Bundle toSave) {
super.onSaveInstanceState(toSave);
toSave.putParcelable("bitmap", bitmap);
}
//nd get it back onCreate:
@Override
public void onCreate(Bundle savedState) {
super.onCreate(savedState);
if (savedState != null) bitmap = savedState.getParcelable("bitmap");
}
你能告诉你这种活动的方法吗? – ArturSkowronski