Android 如何从非活动类打开新活动
我知道早些时候也有人问过这个问题,但没有一个对我有帮助。我试图做的是当用户点击谷歌地图上的标记时创建一个新的活动。当用户单击AlertDialog的OK按钮时,会生成此标记。我创建了一个单独的类作为AlertDialogGenerator,它是一个非活动类来创建alertDialog。现在,只要我点击这个标记,我就会在logcat中看到这个异常:Android 如何从非活动类打开新活动,android,android-intent,google-maps-android-api-2,android-context,Android,Android Intent,Google Maps Android Api 2,Android Context,我知道早些时候也有人问过这个问题,但没有一个对我有帮助。我试图做的是当用户点击谷歌地图上的标记时创建一个新的活动。当用户单击AlertDialog的OK按钮时,会生成此标记。我创建了一个单独的类作为AlertDialogGenerator,它是一个非活动类来创建alertDialog。现在,只要我点击这个标记,我就会在logcat中看到这个异常: java.lang.NullPointerException at android.app.Activity.startActivityFo
java.lang.NullPointerException
at android.app.Activity.startActivityForResult(Activity.java:3390)
at android.app.Activity.startActivityForResult(Activity.java:3351)
at .onMarkerClick(.java:190)
at com.google.android.gms.maps.GoogleMap$8.a(Unknown Source)
at com.google.android.gms.maps.internal.k$a.onTransact(Unknown Source)
at android.os.Binder.transact(Binder.java:347)
at cni.a(SourceFile:84)
at maps.af.bj.a(Unknown Source)
at maps.ao.c.a(Unknown Source)
at maps.ao.n.c(Unknown Source)
at maps.ao.m.a(Unknown Source)
at maps.ao.an.b(Unknown Source)
at maps.ao.bc.onSingleTapConfirmed(Unknown Source)
at maps.br.g.onSingleTapConfirmed(Unknown Source)
at maps.br.i.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
我知道这个错误与上下文有关,但我不知道我必须在这里传递什么上下文。。。我尝试了几乎所有的上下文,但没有一个是有效的。下面是用于此目的的代码片段
Intent intent = new Intent(contextx,InfoActivity.class);
startActivityForResult(intent, 0);
下面是我调用startActivityForResult的代码:
public class Available extends Activity implements
OnMarkerClickListener {
private Context contextx;
public Available(Context context) {
super();
this.contextx = context;
}
public Available() {
super();
}
public static HashMap<Marker, DriverInfo> driverIdentification;
private DriverInfo selectedDriverInfo;
public DriverInfo getSelectedDriverInfo() {
return selectedDriverInfo;
}
public void setSelectedDriverInfo(DriverInfo selectedDriverInfo) {
this.selectedDriverInfo = selectedDriverInfo;
}
@Override
public boolean onMarkerClick(Marker marker) {
Intent intent = new Intent(contextx,DriverInfoActivity.class);
startActivityForResult(intent, 0);
return false;
}
}
Contextx是包含google地图和InfoActivity的活动的上下文。class是我想在Marker click事件中创建的类。仅供参考,此意图是在Marker click事件侦听器上创建的
我希望这些信息足够。如果我遗漏了什么,请留下评论。您可以这样做:
((Activity)contextx).startActivity(i);
或者,为了保持startActivityForResult方法:
((Activity)contextx).startActivityForResult(intent, 0);
刚刚测试过它,它就正常工作了。你是如何初始化contextx的?请发布你调用startActivityForResult的类的全部代码。我已经通过Constructor携带了MapActivity的上下文,并在intent中使用了它。在将它传递到intent之前,尝试使用Log.d打印contextx。Activity.java:3390中有什么内容?