【问题标题】:cannot use the contentResolver无法使用 contentResolver
【发布时间】:2011-11-05 01:34:48
【问题描述】:

我几乎完成了我的应用程序......但现在我不能像这样使用 ContentResolver:

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

我不知道如何解决这个问题...如果我在我的主活动中使用此语法,它会起作用... 但它在我的类 CustomItemizedOverlay 中不起作用。

我标记了我必须修复的线......

eclipse 说:CustomItemizedOverlay 类型的方法 getContentResolver() 未定义

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

}

【问题讨论】:

    标签: android uri android-contentresolver


    【解决方案1】:

    getContentResolver是属于Context子类的方法,比如Activity。你的班级没有这样的方法,所以你不能使用它。最简单的解决方法是在新类中存储对您的活动的引用:

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

    然后在需要时致电context.getContentResolver(...)

    【讨论】:

    猜你喜欢
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多