我有这种情况:
现在,我想从我的逐项覆盖中启动另一个活动。我通过这种方式实现了以标准意图发起一项活动:
@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; [....]
答案 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
。