1

アプリを Google Play にアップロードしましたが、いくつか更新した後、このようなエラーが発生しました

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.wipeout.simplegame/com.wipeout.simplegame.MainMenu}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
at android.app.ActivityThread.access$1500(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3687)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.wipeout.simplegame.screen.MainMenu.onCreate(MainMenu.java:238)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
... 11 more

ここに私の MainMenu.java があります

private ImageView advertButton;
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_menu);
        advertButton = (ImageView) findViewById(R.id.advertOffButton);

    advertButton.setOnClickListener(new OnClickListener() { //line 238

        @Override
        public void onClick(View v) {

            if (mHelper != null) {
                mHelper.flagEndAsync();
                try {
                    mHelper.launchPurchaseFlow(MainMenu.this, SKU_PREMIUM, RC_REQUEST, mPurchaseFinishedListener, "");
                } catch (IllegalStateException ex) {
                }
            }
        }
    });
}

flagEndAsync()私はそれが誰かを助けるのを見たので、私はIabHelperで公開に設定しましたが、私の問題はまだ存在しています. アプリ課金の全コードはGoogleデベロッパーサイトからコピーしたのでどこに問題があるのか​​わかりません。私と少数のテスト アカウントでは、すべてがうまく機能しますが、一部の人は問題を抱えています。

4

2 に答える 2

0

こんな感じに作ってみてください

findViewById(R.id.advertOffButton).setOnClickListener(MainMenu.this);

オーバーライドされたメソッド onClick を追加します

@Override
public void onClick(View view) {
   if (view.getId() == R.id.advertButton) {
      if (MainMenu.class != null) {
       if (mHelper != null) {
        mHelper.flagEndAsync();
        try {
               mHelper.launchPurchaseFlow(MainMenu.this, SKU_PREMIUM, RC_REQUEST, mPurchaseFinishedListener, "");
        } catch (IllegalStateException ex) {
        }
       }
    }
}
}

もちろん、AND 演算子を使用してこの if ステートメントを作成することもできます :)

于 2013-10-24T11:26:15.633 に答える
0

あなたの AdvertButton はおそらくnull. それを使用する前に、あなたがそれを通り抜けていることを確認してくださいactivity.findViewById(R.id.advertButton);

于 2013-10-23T23:41:27.533 に答える