所以我只写了这些代码:
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/