我为一个简单的游戏编写了这段代码。基本上,我希望玩家在10秒内尽可能多次按下按钮。一切正常,代码甚至可以编译,但是当我启动应用程序时,它没有显示分数(Text field
为空)。我做错了什么?
public class ButtonActivity extends Activity implements OnClickListener {
private int score;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button);
new CountDownTimer(11000, 1000) {
TextView TimerText = (TextView) findViewById(R.id.TimerText);
public void onTick(long millisUntilFinished) {
TimerText.setText("" + millisUntilFinished / 1000);
}
public void onFinish() {
setContentView(R.layout.activity_score);
}
}.start();
}
private void screenUpdate() {
TextView screenPoints = (TextView) findViewById(R.id.Scoringboard);
screenPoints.setText(String.valueOf(score));
}
@Override
public void onClick(View view) {
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(this);
score++;
screenUpdate();
}
}
答案 0 :(得分:1)
尝试在onCreate()中移动这两行。
Button button =(Button) findViewById(R.id.button1);
button.setOnClickListener(this);
基本上只有在点击监听器被附加时才会调用onClick ...并且你不能将它附加在onClick中,因为它在被附加之前不会被调用:)。在onCreate中移动2行可确保连接侦听器。
答案 1 :(得分:0)
首先,您在onCreate()
方法上移动此代码。
Button button =(Button) findViewById(R.id.button1);
button.setOnClickListener(this);
答案 2 :(得分:0)
// try this way, hope this will help you...
**XML** code
**activity_button**
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical" >
<TextView
android:id="@+id/txtTimer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textStyle="bold"
android:layout_marginTop="10dp"/>
<Button
android:id="@+id/btnScore"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="Click For Score"/>
</LinearLayout>
**activity_score**
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical" >
<TextView
android:id="@+id/txtScore"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textStyle="bold"/>
</LinearLayout>
**ACTIVITY** code
**ButtonActivity**
// try this way, hope this will help you...
**XML** code
**activity_button**
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical" >
<TextView
android:id="@+id/txtTimer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textStyle="bold"
android:layout_marginTop="10dp"/>
<Button
android:id="@+id/btnScore"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="Click For Score"/>
</LinearLayout>
**activity_score**
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical" >
<TextView
android:id="@+id/txtScore"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textStyle="bold"/>
</LinearLayout>
**ACTIVITY** code
**ButtonActivity**
public class ButtonActivity extends Activity {
private TextView txtScore ;
private TextView txtTimer ;
private Button btnScore;
private int score;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button);
txtTimer = (TextView) findViewById(R.id.txtTimer);
btnScore = (Button) findViewById(R.id.btnScore);
new CountDownTimer(11000, 1000) {
public void onTick(long millisUntilFinished) {
txtTimer.setText("Hurry!!!,You Have Only "+(millisUntilFinished / 1000)+" Second Left.");
}
public void onFinish() {
runOnUiThread(new Runnable() {
@Override
public void run() {
setContentView(R.layout.activity_score);
txtScore = (TextView) findViewById(R.id.txtScore);
txtScore.setText("Your Score Is >> "+score);
}
});
}
}.start();
btnScore.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
score++;
}
});
}
}