我正在尝试从我的类中访问/调用我的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崩溃。
答案 0 :(得分:0)
尝试将activity的context变量作为参数传递给startPurchase()方法
答案 1 :(得分:0)
最后,我通过在我的活动类中移动我的类来修复我的问题。我不确定为什么它现在有效,但是当我把这个课程作为一个单独的课程时它没有。