Итак, я очень новичок в программировании на Android. Я хочу сделать простое приложение с тремя кнопками «атака», и когда пользователь нажимает одну кнопку, он должен рассчитать ущерб, изменить hp одного из игроков и вывести какой-то текст (кто болит, кто на сколько). Все работает, но только в первый раз. После нажатия первой кнопки приложение больше не реагирует на нажатия кнопок.Android onClickListener работает только один раз
MainActivity.java
package sn.nujno.bitkadolgcasa;
import java.util.Random;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity implements View.OnClickListener {
Random rand = new Random();
public int hp1 = 100;
public int hp2 = 100;
public int power = 10;
public int igralec = 1;
public String text = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button nn = (Button)findViewById(R.id.nn);
Button hn = (Button)findViewById(R.id.hn);
Button mn = (Button)findViewById(R.id.mn);
nn.setOnClickListener(this);
hn.setOnClickListener(this);
mn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
int id = v.getId();
int napad;
int moznost;
setContentView(R.layout.activity_main);
TextView hpT=(TextView)findViewById(R.id.textView3);
TextView hpA=(TextView)findViewById(R.id.textView4);
TextView mw=(TextView)findViewById(R.id.mw);
if(id == R.id.nn && igralec == 1){
moznost = rand.nextInt(100);
if(moznost >= 50){
napad = rand.nextInt(10)+ 1;
hp1 = hp1 - napad;
text ="Tim je poskodoval Alena za " + napad + " zivljensjkih tock. Kaj bo storil Alen?" ;
}else if(moznost < 50){
text ="Tim je zgresil. Kaj bo storil Alen?";
}
igralec = 2;
}
else if(id == R.id.nn && igralec == 2){
moznost = rand.nextInt(100);
if(moznost >= 50){
napad = rand.nextInt(10)+ 1;
hp1 = hp1 - napad;
text ="Alen je poskodoval Tima za " + napad + " zivljensjkih tock. Kaj bo storil Tim?" ;
}else if(moznost < 50){
text ="Alen je zgresil. Kaj bo storil Tim?";
}
igralec = 1;
}
else if(id == R.id.mn && igralec == 1){
moznost = rand.nextInt(100);
if(moznost >= 80){
napad = rand.nextInt(15)+ 10;
hp1 = hp1 - napad;
text ="Tim je poskodoval Alena za " + napad + " zivljensjkih tock. Kaj bo storil Alen?" ;
}else if(moznost < 80){
text ="Tim je zgresil. Kaj bo storil Alen?";
}
igralec = 2;
}
else if(id == R.id.mn && igralec == 2){
moznost = rand.nextInt(100);
if(moznost >= 80){
napad = rand.nextInt(15)+ 10;
hp1 = hp1 - napad;
text ="Alen je poskodoval Tima za " + napad + " zivljensjkih tock. Kaj bo storil Tim?" ;
}else if(moznost < 80){
text ="Alen je zgresil. Kaj bo storil Tim?";
}
igralec = 1;
}
else if(id == R.id.hn && igralec == 1){
moznost = rand.nextInt(100);
if(moznost >= 25){
napad = rand.nextInt(5) +1;
hp1 = hp1 - napad;
text ="Tim je poskodoval Alena za " + napad + " zivljensjkih tock. Kaj bo storil Alen?" ;
}else if(moznost < 25){
text ="Tim je zgresil. Kaj bo storil Alen?";
}
igralec = 2;
}
else if(id == R.id.hn && igralec == 2){
moznost = rand.nextInt(100);
if(moznost >= 25){
napad = rand.nextInt(5) +1;
hp1 = hp1 - napad;
text ="Alen je poskodoval Tima za " + napad + " zivljensjkih tock. Kaj bo storil Tim?" ;
}else if(moznost < 25){
text ="Alen je zgresil. Kaj bo storil Tim?";
}
igralec = 1;
}
else if(hp1 ==0){
text = "Zmagal je Alen. Igra se bo začela znova.";
hp1 = 100;
hp2 = 100;
igralec = 1;
}
else if(hp2 == 0){
text = "Zmagal je Tim. Igra se bo začela znova.";
hp1 = 100;
hp2 = 100;
igralec = 1;
}
mw.setText(text);
hpT.setText(""+ hp1);
hpA.setText(""+ hp2);
}
}
это как-то связано с ** igralec **, вы проходите в условии if ... onClick() получает вызов каждый раз. – nobalG