Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓应用内计费应用赢得';跑不动_Java_Android_Eclipse - Fatal编程技术网

Java 安卓应用内计费应用赢得';跑不动

Java 安卓应用内计费应用赢得';跑不动,java,android,eclipse,Java,Android,Eclipse,我正在尝试使用应用内计费构建一个简单的Android应用。我正在使用Nexus7 2013设备来运行和调试它。我刚刚收到错误消息,“不幸的是,你的应用程序已经停止了。”我尝试了记录和插入断点,但它似乎从未到达代码的开头。我正在使用和,并且刚刚开始使用它们。我的代码: package com.myknitcards.project; import android.app.Activity; import android.app.ActionBar; import android.app.Frag

我正在尝试使用应用内计费构建一个简单的Android应用。我正在使用Nexus7 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);
    }
}
我的日志如下:

10-14 17:30:07.458:D/AndroidRuntime(10207):关闭虚拟机 10-14 17:30:07.458:W/dalvikvm(10207):threadid=1:线程退出,但出现未捕获异常(组=0x41be2ba8) 10-1417:30:07.458:E/AndroidRuntime(10207):致命异常:主 10-1417:30:07.458:E/AndroidRuntime(10207):进程:com.myknitcards.project,PID:10207 10-14 17:30:07.458:E/AndroidRuntime(10207):java.lang.RuntimeException:无法实例化活动组件信息{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(ActivityThread.java:1196) 10-14 17:30:07.458:E/AndroidRuntime(10207):在android.os.Handler.dispatchMessage(Handler.java:102)上 10-1417: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):位于java.lang.reflect.Method.Invokenactive(本机方法) 10-1417:30:07.458:E/AndroidRuntime(10207):在java.lang.reflect.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-1417: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.findViewById(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-1417: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-1417:30:07.458:E/AndroidRuntime(10207):。。。还有11个 10-14 17:30:10.701:I/进程(10207):发送信号。PID:10207信号:9

我甚至不知道从哪里开始。为什么它不能实例化活动?顺便说一句,我已经从谷歌的开发者网站下载了这个驱动程序示例,它将在我的平板电脑上运行,所以这不是问题所在。欢迎任何建议。

从堆栈跟踪列表中的最后一个“原因”开始(这是第一个例外):

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

文档说
findViewById(int-id)
返回“如果找到视图,则返回null”。但它没有返回null,而是抛出NPE

您可以查看Activity.java:1884的源代码,或者设置一个异常断点,以找出它所跳过的null

可能它无法加载所需的布局资源、清单或其他资源。或者可能缺少一个资源

这里有一个链接到的源代码??版本。它说:

public View findViewById(int id) {
    return getWindow().findViewById(id);
}
因此
getWindow()
必须返回
null
。文档说它返回“当前窗口,如果活动不可见,则返回null。”


显然,它认为您的主要活动不是“可视的”。您的主要活动是否声明为服务?

Jerry,谢谢-问题是我在onCreate方法之外实例化了按钮。这是对教程文本的修改,但我这样做是为了可以在buttonClicked方法中调用它们。我将实例化移到了这两个方法中,它工作得很好(当然,直到下一个错误出现,但它仍然如此)。我猜它在onCreate之前不起作用,因为在调用onCreate之前Java不能使用R,但这完全是猜测。如果你知道原因并能把它传下去,那就太好了。再次感谢!很乐意帮忙。我认为
super.onCreate()
(活动生命周期的第一步)创建了窗口。另外,
findViewById(int-id)
说“从onCreate(Bundle)中处理的XML中查找由id属性标识的视图”,从而显示依赖关系
R
包含文本,因此Java应该可以在该类按需加载后立即使用这些文本。