应用程序在启动时崩溃。
问题描述:
我想写一个井字游戏/应用程序,但我无法得到它的工作。这段代码有什么问题?它在启动时崩溃。你能帮我么???应用程序在启动时崩溃。
package com.example.tictactoe;
import android.os.Bundle;
import android.app.Activity;
import android.util.DisplayMetrics;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity implements OnClickListener {
// Spremenljivke
int width, height;
int s1, s2;// score
int pot;// Poteza
int round;// Runda
int i;// for...
Button b1, b2, b3, b4, b5, b6, b7, b8, b9;
TextView rez1, rez2, runda;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
s1 = 0;
s2 = 0;
/*DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
height = metrics.heightPixels;
width = metrics.widthPixels;*/
b1.findViewById(R.id.button1);
b2.findViewById(R.id.button2);
b3.findViewById(R.id.button3);
b4.findViewById(R.id.button4);
b5.findViewById(R.id.button5);
b6.findViewById(R.id.button6);
b7.findViewById(R.id.button7);
b8.findViewById(R.id.button8);
b9.findViewById(R.id.button9);
b1.setOnClickListener(this);
b2.setOnClickListener(this);
b3.setOnClickListener(this);
b4.setOnClickListener(this);
b5.setOnClickListener(this);
b6.setOnClickListener(this);
b7.setOnClickListener(this);
b8.setOnClickListener(this);
b9.setOnClickListener(this);
rez1.findViewById(R.id.textView1); rez2.findViewById(R.id.textView3);
runda.findViewById(R.id.textView2);
rez1.setText(""+s1); rez2.setText(""+rez2); runda.setText(""+round);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.button1:
rez1.setText("inside");
break;
case R.id.button2:
rez1.setText("inside");
break;
case R.id.button3:
rez1.setText("inside");
break;
case R.id.button4:
rez1.setText("inside");
break;
case R.id.button5:
rez1.setText("inside");
break;
case R.id.button6:
rez1.setText("inside");
break;
case R.id.button7:
rez1.setText("inside");
break;
case R.id.button8:
rez1.setText("inside");
break;
case R.id.button9:
rez1.setText("inside");
break;
}
}
}
答
您正在错误地分配所有视图。相反的:
b1.findViewById(R.id.button1);
用途:
b1 = (Button) findViewById(R.id.button1);
等了你所有的其他意见。对于TextViews使用:
rez1 = (TextView) findViewById(R.id.textView1);
你的另一只手的setOnClickListener()
和setText()
用法是正确的,所以不要改变这种状况。
答
你宣布你的按钮是这样的:
b1.findViewById(R.id.button1);
b2.findViewById(R.id.button2);
b3.findViewById(R.id.button3);
b4.findViewById(R.id.button4);
b5.findViewById(R.id.button5);
b6.findViewById(R.id.button6);
b7.findViewById(R.id.button7);
b8.findViewById(R.id.button8);
b9.findViewById(R.id.button9);
替换有:
b1=(Button)findViewById(R.id.button1);
与其他视图(B2,B3 ...,rez1,rez2 ..)那样的。
错误信息会有帮助 – Viper
我建议人们不介意帮助处理特定的作业问题,但如果没有特定问题发帖,则不太可能得到肯定的答复。 – Matthew