2011-09-06 2 views
0

가능한 중복 :Android : 방법 : sdcard의 이미지를 표시 하시겠습니까?

여기에 내 현재 코드의
Android: Display Image from SD CARD

:

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(); 

    } 
} 

여기 내 환경의 : A) 2.1 갱신 1

그것은 좀 이상한

,/sdcard의 내 이미지 /AppH23/localMaps/??????????????가 표시되지 않습니다. 모든 gif 파일이 존재하는 것으로 확인되었습니다.

업데이트 : 여기가 이전 게시물이며 gif 이미지가 얼마 전에 표시되었는지 확인할 수 있습니다. gif image displayed

+0

오류가 발생합니까? –

+0

'new RadioButton (this);'이와 같은 객체를 생성하면 메모리 누수가 발생합니다! [참조] (http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html) – Vikas

+0

그 코드를 오래 전에 사용해 본 후에 이미지를 성공적으로 표시했습니다. 하지만 지금, 좀 이상해. @CapDroid 오류가 없습니다. – eros

답변

0

levelRGroup을 클래스 변수로 변경하십시오 (iv과 유사). 현재 로컬 변수이며 onCreate이 반환 된 후 어떤 시점에서 가비지 수집됩니다. 삭제 될 때이를 알 수 없으며 코드에서 아무 것도 변경하지 않아도 일관성없는 동작을 일으킬 수 있습니다.

관련 문제