2011-09-06 144 views
0

可能重複:
Android: Display Image from SD CARDAndroid:如何:從SD卡顯示圖像?

這裏是我當前的代碼:

import android.app.Activity; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Environment; 
import android.widget.ImageView; 
import android.widget.RadioButton; 
import android.widget.RadioGroup; 
import android.widget.RadioGroup.LayoutParams; 

public class DisplayImageMapActivity extends Activity { 
    ImageView iv; 
    private final String FLOOR = "F"; 
    private final String storagePath = Environment.getExternalStorageDirectory() + "/AppH23"; 
    private final String localMapsPath = storagePath + "/localMaps"; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     iv=(ImageView)findViewById(R.id.storageimage); 

     RadioGroup levelRGroup = (RadioGroup) findViewById(R.id.level_rgroup); 

     int levelSize = 8; 
     for (int i = 0; i < levelSize; i++) { 
      RadioButton levelRButton = new RadioButton(this); 
      if(i==0) { 
       levelRButton.setText(new StringBuffer(i+1).append(FLOOR).append("(start)")); 
      } else if (i==7) { 
       levelRButton.setText(new StringBuffer(i+1).append(FLOOR).append("(end)")); 
      } 
      levelRButton.setTag((i+1) + FLOOR); 
      levelRButton.setLayoutParams(
        new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1)); 

      levelRGroup.addView(levelRButton); 
     } 

     levelRGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
      public void onCheckedChanged(RadioGroup group, final int checkedId) { 
       iv.setImageURI(Uri.parse(new StringBuffer(localMapsPath) 
       .append("/").append(group.findViewById(checkedId).getTag()).append(".gif").toString())); 
       iv.invalidate(); 
      } 
     }); 

     levelRGroup.getChildAt(0).performClick(); 

    } 
} 

這裏是我的環境: 一)2.1 UPDATE1

它有點兒奇怪,我的圖片來自/ sdcard /AppH23/localMaps/???.gif不顯示。 確認所有gif文件已存在。

更新: 這是我以前的帖子,你可能會確認gif圖像是前一段時間顯示的。 gif image displayed

+0

有什麼錯誤? –

+0

'新的RadioButton(this);'創建這樣的對象會導致內存泄漏! [見](http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html) – Vikas

+0

我前段時間試過這段代碼,然後成功顯示了圖像。但現在,有點奇怪。 @CapDroid沒有任何錯誤。 – eros

回答

0

嘗試使levelRGroup爲類變量(類似於iv)。它目前是一個局部變量,它將在onCreate返回後的某個點收集垃圾。當它被刪除時不能被知道,即使你沒有改變你的代碼中的任何東西,也會導致不一致的行爲。