Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.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 APK已创建但未在设备上运行_Java_Android_Nullpointerexception_Usb Debugging - Fatal编程技术网

Java APK已创建但未在设备上运行

Java APK已创建但未在设备上运行,java,android,nullpointerexception,usb-debugging,Java,Android,Nullpointerexception,Usb Debugging,我成功编译了一个android应用程序,并创建了它的apk。我还用密钥库对.apk文件进行了签名。但在USB调试模式下运行时,由于某种原因,它给了我一个NullPointerException 例外情况如下: 06-16 15:23:11.639 30531-30531/com.adi.play E/AndroidRuntime﹕ 致命异常:主 java.lang.RuntimeException:无法实例化活动组件信息{com.adi.play/com.adi.play.PlayActivi

我成功编译了一个android应用程序,并创建了它的apk。我还用密钥库对.apk文件进行了签名。但在USB调试模式下运行时,由于某种原因,它给了我一个NullPointerException

例外情况如下:

06-16 15:23:11.639 30531-30531/com.adi.play E/AndroidRuntime﹕ 致命异常:主
java.lang.RuntimeException:无法实例化活动组件信息{com.adi.play/com.adi.play.PlayActivity}:java.lang.NullPointerException
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2277)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2403)
在android.app.ActivityThread.access$600(ActivityThread.java:165)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1373)上
位于android.os.Handler.dispatchMessage(Handler.java:107)
位于android.os.Looper.loop(Looper.java:194)
位于android.app.ActivityThread.main(ActivityThread.java:5391)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:525)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:833)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
在dalvik.system.NativeStart.main(本机方法)
原因:java.lang.NullPointerException
位于android.content.ContextWrapper.getResources(ContextWrapper.java:89)
位于android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:78)
在com.adi.play.PlayActivity。(PlayActivity.java:12)
位于java.lang.Class.newInstanceImpl(本机方法)
位于java.lang.Class.newInstance(Class.java:1319)
位于android.app.Instrumentation.newActivity(Instrumentation.java:1123)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2268)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2403)
在android.app.ActivityThread.access$600(ActivityThread.java:165)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1373)上
位于android.os.Handler.dispatchMessage(Handler.java:107)
位于android.os.Looper.loop(Looper.java:194)
位于android.app.ActivityThread.main(ActivityThread.java:5391)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:525)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:833)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)

在dalvik.system.NativeStart.main(本机方法)
这是您的问题,我不知道您的IDE如何不抱怨相同的问题:

public final String RESULT = getResources().getString(R.string.result);
尝试为onCreate()中的
结果
赋值

您可以在Android中找到有关资源使用情况以及如何访问资源的官方文档

是这条线造成的

public final String RESULT=getResources().getString(R.String.RESULT)

getResources()
方法需要
context
在调用期间可用,运行它时没有可用的上下文

解决方案:

在onCreate上初始化
结果

public class PlayActivity extends Activity {

private String result; //this line

private int total = 0;
private TextView displayResult;
private Button incrementButton;
private Button decrementButton;

@Override
public void onCreate(Bundle bundle) {

    super.onCreate(bundle);
    setContentView(R.layout.activity_play);

    result = getResources().getString(R.string.result); //this line
getResources()
需要在执行
onCreate()
后创建的资源

试试这个代码

package com.adi.play;

import android.os.Bundle;
import android.app.Activity;
import android.widget.Button;
import android.widget.TextView;
import android.view.View;
import android.view.View.OnClickListener;

public class PlayActivity extends Activity {

    public String RESULT;

    private int total = 0;
    private TextView displayResult;
    private Button incrementButton;
    private Button decrementButton;

    @Override
    public void onCreate(Bundle bundle) {

        super.onCreate(bundle);
        setContentView(R.layout.activity_play);

        RESULT = getResources().getString(R.string.result);

        displayResult = (TextView)findViewById(R.id.display_result);
        incrementButton = (Button)findViewById(R.id.increment_button);
        decrementButton = (Button)findViewById(R.id.decrement_button);

        displayResult.setText(RESULT+total);
        incrementButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {

                total++;
                displayResult.setText(RESULT+total);
            }
        });

        decrementButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {

                total--;
                displayResult.setText(RESULT+total);
            }
        });
    }
}

您是否使用了proguard。?共享
com.adi.play.PlayActivity.java
代码以获得更好的帮助。
PlayActivity.java:12
-责任到此为止。@VinothkumarArputharaj完成。我分享了我的Java代码,谢谢你的解释。