0

我有这种情况:

  • 一键式主要活动。单击后,它会启动“mapActivity”
  • 地图活动(扩展 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 活动中获取该文本。上下文具有来自地图活动上下文的值,并以这种方式在构造函数中设置:

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'

有人可以帮我吗?谢谢!

编辑 - 添加我的 MiItemizedOverlay 类的第一行与“扩展”:

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

2 回答 2

0

你可以试试

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

或者

Intent i = new Intent(this, EditarLugarActivity.class);
startActivityForResult(i, 1);
于 2013-07-12T16:56:51.320 回答
0

不存在startActivityForResult只接受一个参数的方法。

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

编辑: StartActivityForResult方法来自 Activity 类。所以你需要如下调用它

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

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

于 2013-07-12T16:57:49.193 回答