2011-11-05 5 views
2
나는 거의 내 appliaction을 완료

을 사용할 수 없습니다 ...하지만 지금은이 같은 컨텐트 리졸버를 사용할 수 없습니다컨텐트 리졸버 ContentResolver

Bitmap imageBitmap = MediaStore.Images.Media.getBitmap(
      getContentResolver(), imageUri); // Problem!!!!! 

내가 어떻게이 문제를 해결하는 방법 아무 생각이 ... 내가 사용하는 경우 작동 내 주 활동이 구문 ... 하지만 내 클래스 CustomItemizedOverlay에서 작동하지 않습니다. I는 I 고칠 필요가 광고 표시

...

이클립스 말한다 다음 메도 getContentResolver()가 입력 CustomItemizedOverlay

import java.util.ArrayList; 
import android.app.AlertDialog; 
import android.content.Context; 
import android.graphics.drawable.Drawable; 
import android.net.Uri; 

import com.google.android.maps.ItemizedOverlay; 
import com.google.android.maps.OverlayItem; 
import android.app.Dialog; 
import android.app.AlertDialog; 
import android.widget.TextView; 
import android.view.View; 
import android.widget.ImageView; 
import android.view.LayoutInflater; 
import android.widget.Toast; 
import android.view.ViewGroup; 
import android.provider.MediaStore; 
import android.provider.MediaStore.Images; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.app.Application; 
import android.content.ContentResolver; 
import android.content.Context; 




public class CustomItemizedOverlay extends ItemizedOverlay<OverlayItem> { 

    private ArrayList<OverlayItem> mapOverlays = new ArrayList<OverlayItem>(); 
    private String title; 
    private String id_string; 
    private String type; 
    private String name; 
    private String adress; 
    private String webpage; 
    private String opening_hours; 
    private Context context; 
    private Uri imageUri; 

    public CustomItemizedOverlay(Drawable defaultMarker) { 
     super(boundCenterBottom(defaultMarker)); 
    } 

    public CustomItemizedOverlay(Drawable defaultMarker, Context context,String title,String id_string,String type,String name,String adress,String webpage,String opening_hours,Uri imageUri) { 
     this(defaultMarker); 
     this.context = context; 
     this.title = title; 
     this.id_string = id_string; 
     this.type = type; 
     this.name =name; 
     this.adress = adress; 
     this.webpage=webpage; 
     this.opening_hours = opening_hours; 
     this.imageUri = imageUri; 

    } 

    @Override 
    protected OverlayItem createItem(int i) { 
     return mapOverlays.get(i); 
    } 

    @Override 
    public int size() { 
     return mapOverlays.size(); 
    } 

    @Override 
    protected boolean onTap(int index) { 
     OverlayItem item = mapOverlays.get(index); 
     AlertDialog.Builder dialog = new AlertDialog.Builder(context); 

     dialog.setTitle(title); 
     View layout = View.inflate(context, R.layout.dialog, null); 

     TextView id_text = (TextView)layout.findViewById(R.id.id); 
     id_text.setText("id:"+id_string); 
     TextView type_text = (TextView)layout.findViewById(R.id.type); 
     type_text.setText("type:"+type); 
     TextView name_text = (TextView)layout.findViewById(R.id.name); 
     name_text.setText("name:"+name); 
     TextView adress_text = (TextView)layout.findViewById(R.id.adress); 
     adress_text.setText("adress:"+adress); 
     TextView webpage_text = (TextView)layout.findViewById(R.id.webpage); 
     webpage_text.setText("webpage:"+webpage); 
     TextView opening_hours_text = (TextView)layout.findViewById(R.id.opening_hours); 
     opening_hours_text.setText("opening_hours:"+opening_hours); 


     ContentResolver con = new Contentresolver(); 

     ImageView imageView = (ImageView) layout.findViewById(R.id.photo); 
     Bitmap imageBitmap = MediaStore.Images.Media.getBitmap(
       getContentResolver(), imageUri); // Problem! HERE!!!! 
     imageView.setImageBitmap(imageBitmap); 


     dialog.setView(layout); 
     dialog.show(); 
     return true; 
    } 

    public void addOverlay(OverlayItem overlay) { 
     mapOverlays.add(overlay); 
     this.populate(); 
    } 

}

답변

5

getContentResolver이 방법에 대한 보증되지 Activity와 같은 Context의 서브 클래스에 속합니다. 수업에는 그런 방법이 없으므로 사용할 수 없습니다. 가장 쉬운 수정은 새로운 클래스에서의 활동에 대한 참조를 저장하는 것입니다 :

Context context; 
public CustomItemizedOverlay(Context myContext, Drawable defaultMarker) { 
    super(boundCenterBottom(defaultMarker)); 
    context = myContext; 
} 

당신이 그것을 필요로 할 때 다음 context.getContentResolver(...) 호출합니다.

+0

getActivity(). 내 클래스가 조각으로 확장되면 getContentResolver()가 작동합니까? http://stackoverflow.com/questions/33274732/image-selected-not-displaying-in-mainactivity/33275152?noredirect=1#comment54350957_33275152 – John

관련 문제