2011-09-06 110 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返回后的某个点收集垃圾。当它被删除时不能被知道,即使你没有改变你的代码中的任何东西,也会导致不一致的行为。