Android 如何从非活动类打开新活动

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

我知道早些时候也有人问过这个问题,但没有一个对我有帮助。我试图做的是当用户点击谷歌地图上的标记时创建一个新的活动。当用户单击AlertDialog的OK按钮时,会生成此标记。我创建了一个单独的类作为AlertDialogGenerator,它是一个非活动类来创建alertDialog。现在,只要我点击这个标记,我就会在logcat中看到这个异常:

 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中有什么内容?