从类启动方法会导致空指针异常

时间:2015-05-22 11:21:50

标签: android nullpointerexception in-app-purchase

我正在尝试从我的类中访问/调用我的Activity中的方法但是在执行此操作时我得到空指针异常。

这是我试图打电话的方法。这个方法在我的活动中:

    public void start(Context context){

    mHelper = new IabHelper(context.getApplicationContext(), base64EncodedPublicKey);

    mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
        public void onIabSetupFinished(IabResult result) {
            if (!result.isSuccess()) {
                Log.d(TAG, "In-app Billing setup failed: " + result);

            } else {
                Log.d(TAG, "In-app Billing is set up OK");

                mHelper.enableDebugLogging(true, TAG);

                startPurchase();

            }
        }
    });

}

在我从中调用它的课程中,我创建了一个类的实例:

ThemeActivity themeact = new ThemeActivity();

我试图从我班上的onClicklistener中调用它:

new AlertDialog.Builder(getContext())
                        .setMessage(
                                "Would you like to purchase this theme?")
                        .setCancelable(false)
                        .setPositiveButton("Yes",
                                new DialogInterface.OnClickListener() {
                                    public void onClick(
                                            DialogInterface dialog, int id) {
                                    //Here is where I am calling it 
                                     themeact.start(getContext());

                                    }
                                }).setNegativeButton("No", null).show();

我在LogCat中收到以下错误:

     FATAL EXCEPTION: main
 java.lang.NullPointerException
    at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:109)
    at test.test.util.IabHelper.<init>(IabHelper.java:164)
    at test.test.ThemeActivity.start(ThemeActivity.java:161)
    at test.test.ColorCard$1$1.onClick(ColorCard.java:67)
    at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:171)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:213)
    at android.app.ActivityThread.main(ActivityThread.java:5225)
    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:741)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
    at dalvik.system.NativeStart.main(Native Method)

修改

我意识到我正在调用错误的方法,现在我正在调用正确的方法,它仍然会因为空指针异常而崩溃并出现不同的错误。我试图传递一个上下文,它仍然无法正常工作。每当我尝试调用方法start();从创建我的Activity,它的工作原理。但是当我试图从我的其他类中调用完全相同的方法时它崩溃了,我不知道为什么。我从方法本身初始化所有内容,所以我不确定为什么它会与null崩溃。

2 个答案:

答案 0 :(得分:0)

尝试将activity的context变量作为参数传递给startPurchase()方法

答案 1 :(得分:0)

最后,我通过在我的活动类中移动我的类来修复我的问题。我不确定为什么它现在有效,但是当我把这个课程作为一个单独的课程时它没有。