【问题标题】:ImageView disapears when changing to portrait/landscape更改为纵向/横向时 ImageView 消失
【发布时间】:2011-07-16 09:01:30
【问题描述】:

我有一个带有位图图片的图像视图。我在 onActivityResault 中设置了这张图片。问题是当我更改为纵向/横向时,图像消失了。

protected void onActivityResult(int requestCode,int resultCode, Intent imageReturnedIntent) { 
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 

    switch(requestCode) { 
    case 1:
        if(resultCode == RESULT_OK){  
            Uri selectedImage = imageReturnedIntent.getData();
            InputStream imageStream;
            try {
                imageStream = getContentResolver().openInputStream(selectedImage);
                Bitmap yourSelectedImage = BitmapFactory.decodeStream(imageStream);
                image.setImageBitmap(yourSelectedImage);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

【问题讨论】:

  • 在您的活动位置的 AndroidManifest.xml 中使用这些行。 android:configChanges="orientation|screenSize".it 解决了我的问题

标签: java android image android-activity imageview


【解决方案1】:

当方向改变时,Activity 被销毁并重新创建。如果您使用 xml 创建布局,则所有设置了 @id 的小部件都应使用其内容自动重新创建。否则,您必须手动执行此操作 - 看看 Activity 的方法 onRestoreInstanceState() onSaveInstanceState() 只需覆盖它们并编写您自己的保存/恢复代码。 一些未经测试的代码,希望能给你一个想法:

@Override
public void onSaveInstanceState(Bundle b){
    b.putParcelable("image", image.getBitmap());
}

@Override
public void onRestoreInstanceState(Bundle b){
    //you need to handle NullPionterException here.
    image.setBitmap((Bitmap) b.getParcelable("image"));
}

【讨论】:

  • 谢谢,但你能再解释一下吗?我的活动中有一个位图对象,如何在这些方法上再次将图像视图图片设置为该位图?
【解决方案2】:

如果你给你的 imageview 一个 ID,当你改变方向时它不会消失。我认为这是保持您的观点的最简单方法。

【讨论】:

    【解决方案3】:

    以 piotrpo 的回答为基础,这里有一个更具体的版本:

    @Override
    public void onSaveInstanceState(Bundle b){
        b.putParcelable("image", imageMap);
    }
    
    @Override
    public void onRestoreInstanceState(Bundle b){
        imageMap = b.getParcelable("image");
        imageView.setImageBitmap(imageMap);
    }
    

    imageMap 是您的位图图像

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-14
      相关资源
      最近更新 更多