簡體   English   中英

Android應用內結算應用無法運行

[英]Android In-App Billing app won't run

我正在嘗試使用應用內結算來構建一個簡單的Android應用。 我正在使用Nexus 7 2013設備運行和調試它。 我只是收到錯誤消息,“不幸的是,您的應用已停止。” 我曾嘗試記錄和插入斷點,但它似乎從未到達代碼的開頭。 我使用本教程這一個 ,並已開始只與他們合作。 我的代碼:

package com.myknitcards.project;

import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

import com.myknitcards.project.util.IabHelper;
import com.myknitcards.project.util.IabResult;
import com.myknitcards.project.util.Inventory;
import com.myknitcards.project.util.Purchase;


public class MainActivity extends Activity {
    private Button clickButton = (Button)findViewById(R.id.clickButton);
    private Button buyButton = (Button)findViewById(R.id.buyButton);

    private static final String TAG = "com.myknitcards.project";
    IabHelper mHelper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main); 

        clickButton.setEnabled(false);

        String base64EncodedPublicKey = 
                "mykeyhere";

        mHelper = new IabHelper(this, 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");
                       }
                         }
                });
    }

    public void buttonClicked(View view) {
        clickButton.setEnabled(false);
        buyButton.setEnabled(true);
    }
}

我的LogCat讀取:

10-14 17:30:07.458:D / AndroidRuntime(10207):關閉VM 10-14 17:30:07.458:W / dalvikvm(10207):threadid = 1:線程退出且未捕獲到異常(group = 0x41be2ba8)10 -14 17:30:07.458:E / AndroidRuntime(10207):致命異常:主10-14 17:30:07.458:E / AndroidRuntime(10207):進程:com.myknitcards.project,PID:10207 10-14 17 :30:07.458:E / AndroidRuntime(10207):java.lang.RuntimeException:無法實例化活動ComponentInfo {com.myknitcards.project / com.myknitcards.project.MainActivity}:java.lang.NullPointerException 10-14 17:30 :07.458:E / AndroidRuntime(10207):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)10-14 17:30:07.458:E / AndroidRuntime(10207):在android.app.ActivityThread.handleLaunchActivity( ActivityThread.java:2233)10-14 17:30:07.458:E / AndroidRuntime(10207):在android.app.ActivityThread.access $ 800(ActivityThread.java:135)10-14 17:30:07.458:E / AndroidRuntime (10207):位於android.app.ActivityThread $ H.handleMessage(ActivityThrea d.java:1196)10-14 17:30:07.458:E / AndroidRuntime(10207):在android.os.Handler.dispatchMessage(Handler.java:102)10-14 17:30:07.458:E / AndroidRuntime( 10207):位於android.os.Looper.loop(Looper.java:136)10-14 17:30:07.458:E / AndroidRuntime(10207):位於android.app.ActivityThread.main(ActivityThread.java:5001)10 -14 17:30:07.458:E / AndroidRuntime(10207):at java.lang.reflect.Method.invokeNative(Native Method)10-14 17:30:07.458:E / AndroidRuntime(10207):at java.lang。反射.Method.invoke(Method.java:515)10-14 17:30:07.458:E / AndroidRuntime(10207):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:785)10 -14 17:30:07.458:E / AndroidRuntime(10207):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)10-14 17:30:07.458:E / AndroidRuntime(10207):在dalvik.system.NativeStart.main(本機方法)10-14 17:30:07.458:E / AndroidRuntime(10207):原因:java.lang.NullPointerException 10-14 17:30:07.458:E / AndroidRuntime(10207) ):位於android.app.Activity.findVie wById(Activity.java:1884)10-14 17:30:07.458:E / AndroidRuntime(10207):在com.myknitcards.project.MainActivity。(MainActivity.java:24)10-14 17:30:07.458:E / AndroidRuntime(10207):位於java.lang.Class.newInstanceImpl(本機方法)10-14 17:30:07.458:E / AndroidRuntime(10207):位於java.lang.Class.newInstance(Class.java:1208)10 -14 17:30:07.458:E / AndroidRuntime(10207):在android.app.Instrumentation.newActivity(Instrumentation.java:1061)10-14 17:30:07.458:E / AndroidRuntime(10207):在android.app .ActivityThread.performLaunchActivity(ActivityThread.java:2101)10-14 17:30:07.458:E / AndroidRuntime(10207):... 11更多10-14 17:30:10.701:I / Process(10207):發送信號。 PID:10207 SIG:9

我什至不知道從哪里開始。 為什么它不能實例化活動? 順便說一句,我已經從Google開發人員網站下載了TrivialDrive示例,該示例將在我的平板電腦上運行,所以這不是問題。 歡迎任何建議。

從堆棧跟蹤列表中的最后一個“ Caused by”開始(這是第一個例外):

引起原因:java.lang.NullPointerException 10-14 17:30:07.458:E / AndroidRuntime(10207):at android.app.Activity.findViewById(Activity.java:1884)

該文檔說findViewById(int id)返回“如果找到該視圖,否則返回null”。 但是它沒有返回null,而是拋出了NPE。

您可以查看Activity.java:1884的源代碼,也可以設置一個異常斷點來查找其傳遞的null。

也許它無法加載所需的布局資源或清單或其他資源。 也許缺少資源。

這是指向??的源代碼的鏈接。 Activity.java的版本。 它說:

public View findViewById(int id) {
    return getWindow().findViewById(id);
}

因此, getWindow()必須返回null 該文檔說它返回“當前窗口,如果活動不可見,則返回null”。

顯然,它認為您的主要活動不是“視覺”。 您的主要活動是否宣布為服務?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM