2011-11-30 157 views
4

每次用户再次单击以将另一图像设置为imageView时,我想要从imageView中删除/清除或清除图像。我得到的OutOfMemoryError:位图大小超过VM预算(堆大小= 7239KB,分配= 2769KB,位图大小= 8748KB) 这里是我的代码:从ImageView删除/删除当前图像?

ImageView imageView; 
private static final int SELECT_PICTURE = 1; 
private String selectedImagePath; 
Bitmap yourSelectedImage; 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


} 


@Override 
protected void onResume() { 
    super.onResume(); 
    imageView = (ImageView) findViewById(R.id.imageView); 

      ((ImageView) findViewById(R.id.imageView)) 
    .setOnClickListener(new OnClickListener() { 

     public void onClick(View arg0) { 

      goToGallery(); 
     } 
    }); 

} 


public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == RESULT_OK) { 
     if (requestCode == SELECT_PICTURE) { 
      Uri selectedImageUri = data.getData(); 
      selectedImagePath = getPath(selectedImageUri); 
      /*Toast.makeText(getBaseContext(), "" + selectedImagePath, 1000) 
        .show(); 
      *///editText2.setText(selectedImagePath); 

      // Convert file path into bitmap image using below line. 
      yourSelectedImage = BitmapFactory 
        .decodeFile(selectedImagePath); 

      // put bitmapimage in your imageview 
      imageView.setImageBitmap(yourSelectedImage); 


     } 
    } 
} 

public String getPath(Uri uri) { 
    String[] projection = { MediaStore.Images.Media.DATA }; 
    Cursor cursor = managedQuery(uri, projection, null, null, null); 
    int column_index = cursor 
      .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
    cursor.moveToFirst(); 
    return cursor.getString(column_index); 
} 
private void goToGallery() 
{ 


    // in onCreate or any event where your want the user to 
    // select a file 
    Intent intent = new Intent(); 
    intent.setType("image/*"); 
    intent.setAction(Intent.ACTION_GET_CONTENT); 
    startActivityForResult(
      Intent.createChooser(intent, "Select Picture"), 
      SELECT_PICTURE); 

} 

回答

20

将资源设置为0对我无效。下面没有工作,虽然:

imageView.setImageBitmap(null); 
0

当您另一幅图像设置为当前ImageView前一个不再用于ImageView。因此,不需要做额外的工作。

+0

嘿,它的真实性,但如果图像不是在另一种观点,那我该怎么办?我的问题是在imageview第一个图像设置,按下一个按钮后,相同的图像设置在另一个图像。所以我wanaa清除第一个image.plz帮助 – Google

1

使用特殊资源Id'0'。它不是一个有效的资源ID,因此图像是空白的。

0
viewToUse.setImageResource(android.R.color.transparent); 
  • 我认为使用setImageResource用颜色标识会给你在Android 2.2.1崩溃的问题,一定要进行测试。
1
image.setImageDrawable(null); 

将清除imageview中的图像。