[英]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.