Android 无法在覆盖类内使用putExtra方法

Android 无法在覆盖类内使用putExtra方法,android,android-intent,itemizedoverlay,Android,Android Intent,Itemizedoverlay,这是我的新android程序,它是一个定制的覆盖类,我无法使用putExtra()将参考值发送到下一个活动我可以成功运行此项目put它不会将任何值发送到下一个类方法有人能帮我修复此错误吗 import java.util.ArrayList; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterf

这是我的新android程序,它是一个定制的覆盖类,我无法使用putExtra()将参考值发送到下一个活动我可以成功运行此项目put它不会将任何值发送到下一个类方法有人能帮我修复此错误吗

import java.util.ArrayList;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.view.MotionEvent;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.MapView;
import com.google.android.maps.OverlayItem;

/**
 * Class used to place marker or any overlay items on Map
 * */
public class AddItemizedOverlay extends ItemizedOverlay<OverlayItem> {

       private ArrayList<OverlayItem> mapOverlays = new ArrayList<OverlayItem>();

       private Context context;
       String place_reference;
       private Activity activity;
       String reference;

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

       public AddItemizedOverlay(Drawable defaultMarker, Context context) {
            this(defaultMarker);
            this.context = context;
       }

       @Override
       public boolean onTouchEvent(MotionEvent event, MapView mapView)
       {   

           if (event.getAction() == 1) {
               GeoPoint geopoint = mapView.getProjection().fromPixels(
                   (int) event.getX(),
                   (int) event.getY());
               // latitude
               double lat = geopoint.getLatitudeE6() / 1E6;
               // longitude
               double lon = geopoint.getLongitudeE6() / 1E6;
               //Toast.makeText(context, "Lat: " + lat + ", Lon: "+lon, Toast.LENGTH_SHORT).show();
           }
           return false;
       } 

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

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

       public AddItemizedOverlay(Drawable defaultMarker, Context context, Activity a) {
            this(defaultMarker);
            this.context = context;
            this.activity = a;
        }

       @Override
       protected boolean onTap(int index) {
         OverlayItem item = mapOverlays.get(index);
         AlertDialog.Builder dialog = new AlertDialog.Builder(this.context);
         dialog.setTitle(item.getTitle());
         dialog.setMessage(item.getSnippet());
         reference = item.getSnippet();
         dialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {

//              Intent a = activity.getIntent();
//      String  reference=a.getStringExtra(place_reference);
                System.out.println("this is additemized :"+reference);
                Intent intent = new Intent(context, SinglePlaceActivity.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                intent.putExtra("KEY_REFERENCE",reference);
                context.startActivity(intent );
            }
         })
            .setNegativeButton("No",new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,int id) {
                    // if this button is clicked, just close
                    // the dialog box and do nothing
                    dialog.cancel();
//                  MainActivity.this.finish();
                }
            });
         dialog.show();
         return true;
       }

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

       public void populateNow(){
           this.populate();
       }

    }
import java.util.ArrayList;
导入android.app.Activity;
导入android.app.AlertDialog;
导入android.content.Context;
导入android.content.DialogInterface;
导入android.content.Intent;
导入android.graphics.drawable.drawable;
导入android.view.MotionEvent;
导入com.google.android.maps.GeoPoint;
导入com.google.android.maps.ItemizedOverlay;
导入com.google.android.maps.MapView;
导入com.google.android.maps.OverlayItem;
/**
*类,用于在地图上放置标记或任何覆盖项
* */
公共类AddItemizeOverlay扩展了ItemizeOverlay{
私有ArrayList mapOverlays=新ArrayList();
私人语境;
字符串位置参考;
私人活动;
字符串引用;
公共AddItemizedOverlay(可绘制默认标记){
super(boundCenterBottom(defaultMarker));
}
public AddItemizedOverlay(可绘制的defaultMarker,上下文){
这(默认标记);
this.context=上下文;
}
@凌驾
公共布尔onTouchEvent(MotionEvent事件,MapView MapView)
{   
if(event.getAction()==1){
GeoPoint GeoPoint=mapView.getProjection().fromPixels(
(int)event.getX(),
(int)event.getY();
//纬度
双纬度=地质点。getLatitudeE6()/1E6;
//经度
双lon=地质点。getLongitudeE6()/1E6;
//Toast.makeText(上下文,“Lat:+Lat+”,Lon:+Lon,Toast.LENGTH_SHORT).show();
}
返回false;
} 
@凌驾
受保护的OverlayItem createItem(int i){
返回mapOverlays.get(i);
}
@凌驾
公共整数大小(){
返回mapOverlays.size();
}
public AddItemizedOverlay(可绘制的defaultMarker、上下文、活动a){
这(默认标记);
this.context=上下文;
本活动=a;
}
@凌驾
受保护的布尔onTap(整数索引){
OverlayItem item=mapOverlays.get(索引);
AlertDialog.Builder dialog=新建AlertDialog.Builder(this.context);
setTitle(item.getTitle());
setMessage(item.getSnippet());
reference=item.getSnippet();
setPositiveButton(“是”,新建DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
//Intent a=activity.getIntent();
//字符串引用=a.getStringExtra(place\u引用);
System.out.println(“这是添加的:+参考);
意向意向=新意向(上下文,SinglePlaceActivity.class);
intent.setFlags(intent.FLAG\u活动\u新任务);
意向。额外(“关键参考”,参考);
背景。开始触觉(意图);
}
})
.setNegativeButton(“否”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
//如果单击此按钮,只需关闭
//打开对话框,不执行任何操作
dialog.cancel();
//MainActivity.this.finish();
}
});
dialog.show();
返回true;
}
公共void addOverlay(OverlayItem overlay){
mapOverlays.add(叠加);
}
公屋{
这个。填充();
}
}

开始活动前

SharedPreferences prefs = context.getSharedPreferences("myprefs", 0);
SharedPreferences.Editor editor =prefs.edit();
editor.putString("KEY_REFERENCE", reference);
editor.commit();
现在,在开始您的活动后,您可以作为

SharedPreferences prefs = getSharedPreferences("myprefs", 0);
String reference=  prefs.getString("KEY_REFERENCE","");

你可以将它们保存在SharedReferences中,然后在下一个活动中检索它们SharedReferences是什么我对Android很新我已经发布了我的ans请查看:)