java - 为什么我在运行应用程序时会收到此错误?

标签 java android variables runtime-error counting

所以我只写了这些代码:

package com.example.android.stimmenauswerter;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;


public class MainActivity extends AppCompatActivity {

    int nein = 0;
    int ja = 0;

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

    final TextView ergebnis =(TextView) findViewById(R.id.ergebnis);

    public void japluseins (View view)
    {
        ja++;
    }

    public void neinpluseins (View view)
    {
        nein++;
    }

    public void result (View view)
    {

        if(ja > nein)
        {
            ergebnis.setText(ja + " JA" + " vs " + nein + " NEIN" + "\nSomit hat JA gewonnen!");
        }
        else if(nein>ja)
        {
            ergebnis.setText(ja + " JA" + " vs " + nein + " NEIN" + "\nSomit hat NEIN gewonnen!");
        }
        else
        {
            ergebnis.setText(ja + " JA" + " vs " + nein + " NEIN" + "\nDas sieht mir nach einem Unentschieden aus!");
        }
    }
}

基本上,应用程序应该计算您按"is"或“否”的次数,并最终打印出数字。我认为代码会完全按照我想要的方式执行,但是当我运行应用程序时,它会崩溃并打印出错误消息:

08-22 16:26:20.834 10574-10574/com.example.android.stimmenauswerter E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                      Process: com.example.android.stimmenauswerter, PID: 10574
                                                                                      java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.android.stimmenauswerter/com.example.android.stimmenauswerter.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference
                                                                                          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3093)
                                                                                          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349)
                                                                                          at android.app.ActivityThread.access$1100(ActivityThread.java:221)
                                                                                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
                                                                                          at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                          at android.os.Looper.loop(Looper.java:158)
                                                                                          at android.app.ActivityThread.main(ActivityThread.java:7225)
                                                                                          at java.lang.reflect.Method.invoke(Native Method)
                                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
                                                                                       Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference
                                                                                          at android.support.v7.app.AppCompatDelegateImplBase.<init>(AppCompatDelegateImplBase.java:72)
                                                                                          at android.support.v7.app.AppCompatDelegateImplV7.<init>(AppCompatDelegateImplV7.java:146)
                                                                                          at android.support.v7.app.AppCompatDelegateImplV11.<init>(AppCompatDelegateImplV11.java:28)
                                                                                          at android.support.v7.app.AppCompatDelegateImplV14.<init>(AppCompatDelegateImplV14.java:41)
                                                                                          at android.support.v7.app.AppCompatDelegateImplV23.<init>(AppCompatDelegateImplV23.java:29)
                                                                                          at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:191)
                                                                                          at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:173)
                                                                                          at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:511)
                                                                                          at android.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:183)
                                                                                          at com.example.android.stimmenauswerter.MainActivity.<init>(MainActivity.java:21)
                                                                                          at java.lang.Class.newInstance(Native Method)
                                                                                          at android.app.Instrumentation.newActivity(Instrumentation.java:1095)
                                                                                          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3083)
                                                                                          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349) 
                                                                                          at android.app.ActivityThread.access$1100(ActivityThread.java:221) 
                                                                                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794) 
                                                                                          at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                          at android.os.Looper.loop(Looper.java:158) 
                                                                                          at android.app.ActivityThread.main(ActivityThread.java:7225) 
                                                                                          at java.lang.reflect.Method.invoke(Native Method) 
                                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

有人可以告诉我代码有什么问题并且可以帮助我修复它吗? 先感谢您, 朱利安.

最佳答案

您在错误的位置执行了以下行:

final TextView ergebnis =(TextView) findViewById(R.id.ergebnis);

上述操作应在 onCreate() 方法内完成,调用 setContentView() 后完成。

它应该是这样的:

public class MainActivity extends AppCompatActivity {

int nein = 0;
int ja = 0;
TextView ergebnis;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ergebnis =(TextView) findViewById(R.id.ergebnis); // <--- This is the fix 
}

public void japluseins (View view)
{
    ja++;
}

public void neinpluseins (View view)
{
    nein++;
}

public void result (View view)
{

    if(ja > nein)
    {
        ergebnis.setText(ja + " JA" + " vs " + nein + " NEIN" + "\nSomit hat JA gewonnen!");
    }
}

关于java - 为什么我在运行应用程序时会收到此错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39082323/

相关文章:

java - Java鞋中的十六进制到ascii转换一些特殊字符

javascript - jQuery全局变量问题

java - 使用 JSF 前端和 node.js 后端的 Web 应用程序

java - 我们到底可以在 Process.exec() 的字符串数组中存储什么

android - 未检测到键盘。 MediaQuery.of(context).viewInsets.bottom 始终返回 0.0

android - 在 Grid View Android 中使用 Glide 时图像被垂直拉伸(stretch)

c - 具有相同参数的相同函数会产生不同的结果

php - 比较变量 PHP

java - 减少 A4J JSF Richfaces 所需的 JavaScript 文件

java - 通知 channel - 设置后是否可以更改 LightColor?