如何使用ItemizedOverlay类从'sartActivityForResult'启动活动

时间:2013-07-12 16:43:58

标签: android android-activity overlay itemizedoverlay

我有这种情况:

  • 只需一个按钮即可完成主要活动。点击后,它会启动'mapActivity'
  • Map活动(扩展MapActivity)使用ItemizedOverlay(扩展ItemizedOverlay)类来标记地图上的位置。

现在,我想从我的逐项覆盖中启动另一个活动。我通过这种方式实现了以标准意图发起一项活动:

@Override
public boolean onTap(GeoPoint point, MapView mapView) {

     boolean tapped = super.onTap(point, mapView);

    if (!tapped){           
        Intent intent = new Intent();
        intent.setClass(this.context, EditarLugarActivity.class);
        this.context.startActivity (intent);
    return true;
}

EditarLugarActivity是一个从用户那里获取文本输入的活动。现在,我需要从Itemized Overlay活动中获取该文本。 Context具有map活动上下文的值,并以这种方式在构造函数中设置:

public MiItemizedOverlay(Context context, Drawable defaultMarker) {
    super(boundCenterBottom(defaultMarker));
    this.context = context;

    populate();
}

要做到这一点,我尝试以这种方式使用'sartActivityForResult'代替'this.content.startActivity(intent):

@Override
public boolean onTap(GeoPoint point, MapView mapView) { 

    boolean tapped = super.onTap(point, mapView);

    if (!tapped){           
        Intent intent = new Intent();
        intent.setClass(this.context, EditarLugarActivity.class);
        this.context.startActivityForResult (intent,1);
    return true;
}

但编译器无法识别。 'this.context'无效,因为它适用于简单的'startActivity'

有人可以帮我这个吗?谢谢!

编辑 -  使用'extends'添加我的MiItemizedOverlay类第一行:

public class MiItemizedOverlay extends ItemizedOverlay<OverlayItem> {
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
private Context context; [....]

2 个答案:

答案 0 :(得分:0)

你可以尝试

    Intent intent = new Intent();
    intent.setClass(getApplicationContext, EditarLugarActivity.class);
    this.context.startActivityForResult (intent);

Intent i = new Intent(this, EditarLugarActivity.class);
startActivityForResult(i, 1);

答案 1 :(得分:0)

没有名为startActivityForResult的方法只有一个参数。

使用,context.startActivityForResult(intent, 1);这里第二个参数是结果代码,当在该活动上调用EditarLugarActivity时,该结果代码将从finish()返回给您。您可以定义自己的结果代码。然后,您需要在活动中实现onActivityResult(int requestCode, int resultCode, Intent data)以捕获此结果代码。

修改 StartActivityForResult方法来自Activity类。所以你需要调用它如下

((Activity) this.context).startActivityForResult(intent, 1);

确保您的上下文确实是一个Activity上下文,并在mapActivity中实现onActivtyResult