在活动之间发送数据意图错误

时间:2011-12-20 23:08:47

标签: java android android-intent maps

我正在尝试使用此类

将数据从叠加层发送到其他活动
public class Capas extends ItemizedOverlay<OverlayItem> 

{
MapView Map;
 private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
 @SuppressWarnings("unused")
private Context mContext;

 public Capas(Drawable defaultMarker, Context context)
 {
 super(boundCenterBottom(defaultMarker));
 mContext = context;
 }
 @Override
 public boolean onTouchEvent(MotionEvent event, MapView mapView) 
 {   
     if (event.getAction() == 1) {                
         GeoPoint puntoTocado = mapView.getProjection().fromPixels((int) event.getX(),(int) event.getY());
         Intent nuevoLugar=new Intent(Capas.this,editarLugar.class);
         nuevoLugar.putExtra("latitud",puntoTocado.getLatitudeE6());
         nuevoLugar.putExtra("longitud",puntoTocado.getLongitudeE6());
         StartActivity()


     }                            
     return false;
 }        

}

但是这会返回下一个错误构造函数Intent(Capas,Class)是未定义的。  我尝试使用Intent nuevoLugar=new Intent(Capas.class,editarLugar.class); Intent nuevoLugar=new Intent(this,editarLugar.class);,但是anoone可以使用

3 个答案:

答案 0 :(得分:2)

在这种情况下,这应该有效:

Intent nuevoLugar = new Intent(mContext, editarLugar.class);

前提是editarLugar extends Activity并在AndroidManifest.xml中声明。 并开始活动:

mContext.startActivity(nuevoLugar);

答案 1 :(得分:2)

要创建新意图,您需要访问Context实例。 ItemizedOverlay并未延伸。

您可以像这样初始化意图:

Intent nuevoLugar=new Intent(mContext, editarLugar.class);

您需要确保editarLugarActivity

但是,您还需要访问该活动。因为我认为我们可以假设你是从一个Activity创建的,你可以像这样启动它:

if(mContext instanceof Activity) {
    ((Activity)mContext).startActivity(nuevoLugar);
}

<击>

我的不好,你可以打电话:

mContext.startActivity(nuevoLugar);

答案 2 :(得分:2)

第一个参数应该是Context。请尝试Intent nuevoLugar = new Intent(mContext,editarLugar.class);