我的應用程序應該首先顯示圖像,當按下按鈕時,另一圖像顯示在圖像視圖中。但是,當屏幕旋轉時,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