在Android活动中出现nullPointerException,不知道为什么以及如何解决它
我正试着编写一个小Tictatcoe游戏。现在我到了一个点,它抛出了一个nullPointerException,我无法解释。有人能帮忙吗 代码主要活动:在Android活动中出现nullPointerException,不知道为什么以及如何解决它,android,nullpointerexception,android-activity,runtime-error,logcat,Android,Nullpointerexception,Android Activity,Runtime Error,Logcat,我正试着编写一个小Tictatcoe游戏。现在我到了一个点,它抛出了一个nullPointerException,我无法解释。有人能帮忙吗 代码主要活动: package de.android.pali; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import and
package de.android.pali;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class TicTacToeMenu extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tic_tac_toe_menu);
final Button createGame = (Button)findViewById(R.id.newGameButton);
final Intent newGame = new Intent(TicTacToeMenu.this, newGame.class);
createGame.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startActivity(newGame);
}
});
}
}
第二项活动代码:
package de.android.pali;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.TextView;
public class newGame extends TicTacToeMenu{
int turn = 1;
int[] felder = new int[9];
TextView ergebnis = (TextView)findViewById(R.id.winners);
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.game);
final ImageButton feld1 = (ImageButton)findViewById(R.id.feld1);
final ImageButton feld2 = (ImageButton)findViewById(R.id.feld2);
final ImageButton feld3 = (ImageButton)findViewById(R.id.feld3);
final ImageButton feld4 = (ImageButton)findViewById(R.id.feld4);
final ImageButton feld5 = (ImageButton)findViewById(R.id.feld5);
final ImageButton feld6 = (ImageButton)findViewById(R.id.feld6);
final ImageButton feld7 = (ImageButton)findViewById(R.id.feld7);
final ImageButton feld8 = (ImageButton)findViewById(R.id.feld8);
final ImageButton feld9 = (ImageButton)findViewById(R.id.feld9);
feld1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(turn==1){
feld1.setBackgroundResource(R.drawable.kreis);
turn = 0;
felder[0] = 1;
}
else{
feld1.setBackgroundResource(R.drawable.kreuz);
turn = 1;
felder[0] = 0;
}
}
});
feld2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(turn==1){
feld2.setBackgroundResource(R.drawable.kreis);
turn = 0;
felder[1] = 1;
}
else{
feld2.setBackgroundResource(R.drawable.kreuz);
felder[1] = 0;
}
}
});
feld3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(turn==1){
feld3.setBackgroundResource(R.drawable.kreis);
turn = 0;
felder[2] = 1;
}
else{
feld3.setBackgroundResource(R.drawable.kreuz);
turn = 1;
felder[2] = 0;
};
}
});
feld4.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(turn==1){
feld4.setBackgroundResource(R.drawable.kreis);
turn = 0;
felder[3] = 1;
}
else{
feld4.setBackgroundResource(R.drawable.kreuz);
felder[3] = 0;
}
}
});
feld5.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(turn==1){
feld5.setBackgroundResource(R.drawable.kreis);
turn = 0;
felder[4] = 1;
}
else{
feld5.setBackgroundResource(R.drawable.kreuz);
turn = 1;
felder[4] = 0;
}
}
});
feld6.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(turn==1){
feld6.setBackgroundResource(R.drawable.kreis);
turn = 0;
felder[5] = 1;
}
else{
feld6.setBackgroundResource(R.drawable.kreuz);
turn = 1;
felder[5] = 0;
}
}
});
feld7.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(turn==1){
feld7.setBackgroundResource(R.drawable.kreis);
turn = 0;
felder[6] = 1;
}
else{
feld7.setBackgroundResource(R.drawable.kreuz);
turn = 1;
felder[6] = 0;
}
}
});
feld8.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(turn==1){
feld8.setBackgroundResource(R.drawable.kreis);
turn = 0;
felder[7] = 1;
}
else{
feld8.setBackgroundResource(R.drawable.kreuz);
turn = 1;
felder[7] = 0;
}
}
});
feld9.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(turn==1){
feld9.setBackgroundResource(R.drawable.kreis);
turn = 0;
felder[8] = 1;
}
else{
feld9.setBackgroundResource(R.drawable.kreuz);
turn = 1;
felder[8] = 0;
}
}
});
}
public int getTurn() {
int whois = turn;
return whois;
}
public void checkWinner(){
if(felder[0]==1 & felder[1]==1 & felder[2]==1){
ergebnis.setText(R.string.kreuz);
}else
{ }
}
}
日志:
11-13 12:26:55.579: I/ActivityManager(88): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=de.android.pali/.TicTacToeMenu} from pid 772
11-13 12:26:55.589: W/WindowManager(88): Failure taking screenshot for (180x300) to layer 21005
11-13 12:26:55.629: D/AndroidRuntime(772): Shutting down VM
11-13 12:26:55.639: D/dalvikvm(772): GC_CONCURRENT freed 101K, 77% free 485K/2048K, paused 1ms+1ms
11-13 12:26:55.649: D/dalvikvm(772): Debugger has detached; object registry had 1 entries
11-13 12:26:55.659: D/dalvikvm(782): Not late-enabling CheckJNI (already on)
11-13 12:26:55.669: I/AndroidRuntime(772): NOTE: attach of thread 'Binder Thread #3' failed
11-13 12:26:55.719: I/ActivityManager(88): Start proc de.android.pali for activity de.android.pali/.TicTacToeMenu: pid=782 uid=10045 gids={}
11-13 12:26:55.948: W/NetworkManagementSocketTagger(88): setKernelCountSet(10045, 1) failed with errno -2
11-13 12:26:56.449: I/Process(88): Sending signal. PID: 782 SIG: 3
11-13 12:26:56.449: I/dalvikvm(782): threadid=3: reacting to signal 3
11-13 12:26:56.569: I/dalvikvm(782): Wrote stack traces to '/data/anr/traces.txt'
11-13 12:26:56.819: D/gralloc_goldfish(782): Emulator without GPU emulation detected.
11-13 12:26:56.868: I/ActivityManager(88): Displayed de.android.pali/.TicTacToeMenu: +1s263ms (total +37s914ms)
11-13 12:26:57.088: W/NetworkManagementSocketTagger(88): setKernelCountSet(10009, 0) failed with errno -2
11-13 12:27:00.828: I/ActivityManager(88): START {cmp=de.android.pali/.newGame} from pid 782
11-13 12:27:00.838: W/WindowManager(88): Failure taking screenshot for (180x300) to layer 21010
11-13 12:27:00.868: D/AndroidRuntime(782): Shutting down VM
11-13 12:27:00.868: W/dalvikvm(782): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
11-13 12:27:00.889: E/AndroidRuntime(782): FATAL EXCEPTION: main
11-13 12:27:00.889: E/AndroidRuntime(782): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{de.android.pali/de.android.pali.newGame}: java.lang.NullPointerException
11-13 12:27:00.889: E/AndroidRuntime(782): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1880)
11-13 12:27:00.889: E/AndroidRuntime(782): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
11-13 12:27:00.889: E/AndroidRuntime(782): at android.app.ActivityThread.access$600(ActivityThread.java:123)
11-13 12:27:00.889: E/AndroidRuntime(782): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
11-13 12:27:00.889: E/AndroidRuntime(782): at android.os.Handler.dispatchMessage(Handler.java:99)
11-13 12:27:00.889: E/AndroidRuntime(782): at android.os.Looper.loop(Looper.java:137)
11-13 12:27:00.889: E/AndroidRuntime(782): at android.app.ActivityThread.main(ActivityThread.java:4424)
11-13 12:27:00.889: E/AndroidRuntime(782): at java.lang.reflect.Method.invokeNative(Native Method)
11-13 12:27:00.889: E/AndroidRuntime(782): at java.lang.reflect.Method.invoke(Method.java:511)
11-13 12:27:00.889: E/AndroidRuntime(782): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
11-13 12:27:00.889: E/AndroidRuntime(782): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
11-13 12:27:00.889: E/AndroidRuntime(782): at dalvik.system.NativeStart.main(Native Method)
11-13 12:27:00.889: E/AndroidRuntime(782): Caused by: java.lang.NullPointerException
11-13 12:27:00.889: E/AndroidRuntime(782): at android.app.Activity.findViewById(Activity.java:1794)
11-13 12:27:00.889: E/AndroidRuntime(782): at de.android.pali.newGame.<init>(newGame.java:13)
11-13 12:27:00.889: E/AndroidRuntime(782): at java.lang.Class.newInstanceImpl(Native Method)
11-13 12:27:00.889: E/AndroidRuntime(782): at java.lang.Class.newInstance(Class.java:1319)
11-13 12:27:00.889: E/AndroidRuntime(782): at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
11-13 12:27:00.889: E/AndroidRuntime(782): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871)
11-13 12:27:00.889: E/AndroidRuntime(782): ... 11 more
11-13 12:27:00.929: W/ActivityManager(88): Force finishing activity de.android.pali/.newGame
11-13 12:27:00.929: W/ActivityManager(88): Force finishing activity de.android.pali/.TicTacToeMenu
11-13 12:27:01.359: I/Process(88): Sending signal. PID: 782 SIG: 3
11-13 12:27:01.359: I/dalvikvm(782): threadid=3: reacting to signal 3
11-13 12:27:01.379: I/dalvikvm(782): Wrote stack traces to '/data/anr/traces.txt'
11-13 12:27:01.439: W/ActivityManager(88): Activity pause timeout for ActivityRecord{415b08b0 de.android.pali/.newGame}
11-13 12:27:01.439: I/Process(88): Sending signal. PID: 782 SIG: 3
11-13 12:27:01.439: I/dalvikvm(782): threadid=3: reacting to signal 3
11-13 12:27:01.459: I/dalvikvm(782): Wrote stack traces to '/data/anr/traces.txt'
11-13 12:27:01.488: W/NetworkManagementSocketTagger(88): setKernelCountSet(10009, 1) failed with errno -2
11-13 12:27:01.748: W/NetworkManagementSocketTagger(88): setKernelCountSet(10045, 0) failed with errno -2
11-13 12:27:02.169: I/Process(782): Sending signal. PID: 782 SIG: 9
11-13 12:27:02.178: I/ActivityManager(88): Process de.android.pali (pid 782) has died.
11-13 12:27:02.178: W/InputDispatcher(88): channel '415c53c8 de.android.pali/de.android.pali.TicTacToeMenu (server)' ~ Consumer closed input channel or an error occurred. events=0x8
11-13 12:27:02.178: E/InputDispatcher(88): channel '415c53c8 de.android.pali/de.android.pali.TicTacToeMenu (server)' ~ Channel is unrecoverably broken and will be disposed!
11-13 12:27:02.189: I/WindowManager(88): WIN DEATH: Window{415c53c8 de.android.pali/de.android.pali.TicTacToeMenu paused=true}
11-13 12:27:02.189: W/InputDispatcher(88): Attempted to unregister already unregistered input channel '415c53c8 de.android.pali/de.android.pali.TicTacToeMenu (server)'
11-13 12:27:02.199: I/WindowManager(88): WINDOW DIED Window{415c53c8 de.android.pali/de.android.pali.TicTacToeMenu paused=true}
11-13 12:27:02.359: W/InputManagerService(88): Got RemoteException sending setActive(false) notification to pid 782 uid 10045
11-13 12:27:11.749: W/ActivityManager(88): Activity destroy timeout for ActivityRecord{415a28b8 de.android.pali/.TicTacToeMenu}
11-13 12:27:11.749: W/ActivityManager(88): Activity destroy timeout for ActivityRecord{415b08b0 de.android.pali/.newGame}
11-13 12:26:55.579:I/ActivityManager(88):从pid 772开始{act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]flg=0x10000000 cmp=de.android.pali/.tictactoemu}
11-13 12:26:55.589:W/WindowManager(88):拍摄(180x300)至21005层的故障截图
11-13 12:26:55.629:D/AndroidRuntime(772):关闭虚拟机
11-13 12:26:55.639:D/dalvikvm(772):GC_并发释放101K,77%释放485K/2048K,暂停1ms+1ms
11-13 12:26:55.649:D/dalvikvm(772):调试器已分离;对象注册表有1个条目
11-13 12:26:55.659:D/dalvikvm(782):启用CheckJNI(已启用)不迟
11-13 12:26:55.669:I/AndroidRuntime(772):注意:连接螺纹“粘合剂螺纹#3”失败
11-13 12:26:55.719:I/ActivityManager(88):为activity de.android.pali/.TicTacToeMenu启动proc de.android.pali:pid=782 uid=10045 gids={}
11-13 12:26:55.948:W/NetworkManagementSocketTagger(88):setKernelCountSet(10045,1)失败,错误号为-2
11-13 12:26:56.449:I/进程(88):发送信号。PID:782信号:3
11-13 12:26:56.449:I/dalvikvm(782):线程ID=3:对信号3作出反应
11-13 12:26:56.569:I/dalvikvm(782):将堆栈跟踪写入“/data/anr/traces.txt”
11-13 12:26:56.819:D/gralloc_金鱼(782):未检测到GPU仿真的仿真器。
11-13 12:26:56.868:I/ActivityManager(88):显示de.android.pali/.TicTacToeMenu:+1s263ms(总计+37s914ms)
11-13 12:26:57.088:W/NetworkManagementSocketTagger(88):setKernelCountSet(10009,0)失败,错误号为-2
11-13 12:27:00.828:I/ActivityManager(88):从pid 782启动{cmp=de.android.pali/.newGame}
11-13 12:27:00.838:W/WindowManager(88):拍摄(180x300)至21010层的故障截图
11-13 12:27:00.868:D/AndroidRuntime(782):关闭虚拟机
11-13 12:27:00.868:W/dalvikvm(782):threadid=1:线程以未捕获异常退出(组=0x409c01f8)
11-13 12:27:00.889:E/AndroidRuntime(782):致命异常:main
11-13 12:27:00.889:E/AndroidRuntime(782):java.lang.RuntimeException:无法实例化活动组件信息{de.android.pali/de.android.pali.newGame}:java.lang.NullPointerException
11-13 12:27:00.889:E/AndroidRuntime(782):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1880)
11-13 12:27:00.889:E/AndroidRuntime(782):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
11-13 12:27:00.889:E/AndroidRuntime(782):在android.app.ActivityThread.access$600(ActivityThread.java:123)
11-13 12:27:00.889:E/AndroidRuntime(782):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
11-13 12:27:00.889:E/AndroidRuntime(782):在android.os.Handler.dispatchMessage(Handler.java:99)上
11-13 12:27:00.889:E/AndroidRuntime(782):在android.os.Looper.loop(Looper.java:137)上
11-13 12:27:00.889:E/AndroidRuntime(782):位于android.app.ActivityThread.main(ActivityThread.java:4424)
11-13 12:27:00.889:E/AndroidRuntime(782):位于java.lang.reflect.Method.Invokenactive(本机方法)
11-13 12:27:00.889:E/AndroidRuntime(782):位于java.lang.reflect.Method.invoke(Method.java:511)
11-13 12:27:00.889:E/AndroidRuntime(782):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
11-13 12:27:00.889:E/AndroidRuntime(782):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
11-13 12:27:00.889:E/AndroidRuntime(782):在dalvik.system.NativeStart.main(本机方法)
11-13 12:27:00.889:E/AndroidRuntime(782):由以下原因引起:java.lang.NullPointerException
11-13 12:27:00.889:E/AndroidRuntime(782):在android.app.Activity.findViewById(Activity.java:1794)
11-13 12:27:00.889:E/AndroidRuntime(782):在de.android.pali.newGame.(newGame.java:13)
11-13 12:27:00.889:E/AndroidRuntime(782):位于java.lang.Class.newInstanceImpl(本机方法)
11-13 12:27:00.889:E/AndroidRuntime(782):位于java.lang.Class.newInstance(Class.java:1319)
11-13 12:27:00.889:E/AndroidRuntime(782):在android.app.Instrumentation.newActivity(Instrumentation.java:1023)上
11-13 12:27:00.889:E/AndroidRuntime(782):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871)
11-13 12:27:00.889:E/AndroidRuntime(782):。。。还有11个
11-13 12:27:00.929:W/ActivityManager(88):强制完成activity de.android.pali/.newGame
11-13 12:27:00.929:W/ActivityManager(88):强制完成activity de.android.pali/.TicTacToeMenu
11-13 12:27:01.359:I/进程(88):发送信号。PID:782信号:3
11-13 12:27:01.359:I/dalvikvm(782):线程ID=3:对信号3作出反应
11-13 12:27:01.379:I/dalvikvm(782):将堆栈跟踪写入“/data/anr/traces.txt”
11-13 12:27:01.439:W/ActivityManager(88):ActivityRecord{415b08b0 de.android.pali/.newGame}的活动暂停超时
11-13 12:27:01.439:I/进程(88):发送信号。PID:782信号:3
11-13 12:27:01.439:I/dalvikvm(782):threadid=3:对信号3作出反应
11-13 12:27:01.459:I/dalvikvm(782):将堆栈跟踪写入“/data/anr/traces.txt”
11-13 12:27:01.488:W/NetworkManagementSocketTagger(88):setKernelCountSet(10009,1)失败,错误号为-2
11-13 12:27:01.748:W/NetworkManagementSocketTagger(88):setKernelCountSet(10045,0)失败,错误号为-2
11-13 12:27:02.169:I/进程(782):发送信号。PID:782信号:9
11-13 12:27:02.178:I/ActivityManager(88):进程de.android.pali(pid 782)已死亡。
11-13 12:27:02.178:W/InputDispatcher(88):通道“415c53c8 de.android.pali/de.android.pali.TicTacToeMenu(服务器)”~消费者关闭输入通道或发生错误。事件=0x8
11-13 12:27:02.178:E/InputDispatcher(88):频道“415c53c8 de.android.pali/de.android.pali.TicTacToeMenu(服务器)”~频道无法恢复,将被处理!
11-13 12:27:02.189:I/WindowManager(88):赢得死亡:窗口{415c53c8 de.android.pali/de
TextView ergebnis = (TextView)findViewById(R.id.winners);
11-13 12:27:00.889: E/AndroidRuntime(782): at de.android.pali.newGame.<init>(newGame.java:13)
feld1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
....