我要做的是将TextView
设置为计时器计数器,计数器从60计数到0.但问题是,如果用户可以猜出正确的数字,我无法取消计时器进入下一个级别。到目前为止我尝试的是,在另一个有效onClick
的函数下取消它。但我得到一个错误,说它不能在onClick
下调用。
这是代码
public class MainActivity extends AppCompatActivity {
MediaPlayer guessButtonPlayer;
MediaPlayer silButtonPlayer;
MediaPlayer numberButtonPlayer;
MediaPlayer winButtonPlayer;
int bolum = 1;
int seviye = 1;
int gameScale = 20;
CountDownTimer timer;
Boolean isTimerActive = true;
public void checkGuess(View view){
guessButtonPlayer.start();
EditText usersGuess = (EditText) findViewById(R.id.userGuess);
if(usersGuess.getText().toString().isEmpty()){
TextView bilgiEkrani2 = (TextView) findViewById(R.id.bilgiEkrani2);
bilgiEkrani2.setText("Lütfen bir sayı giriniz.");
} else {
String usersGuessString = usersGuess.getText().toString();
int usersGuessInt = Integer.parseInt(usersGuessString);
if(usersGuessInt > randomNumber){
TextView bilgiEkrani2 = (TextView) findViewById(R.id.bilgiEkrani2);
bilgiEkrani2.setText("Daha küçük bir sayı dene.");
usersGuess.setText("");
} else if(usersGuessInt < randomNumber) {
TextView bilgiEkrani2 = (TextView) findViewById(R.id.bilgiEkrani2);
bilgiEkrani2.setText("Daha büyük bir sayı dene.");
usersGuess.setText("");
} else {
bolum += 1;
isTimerActive = false;
TextView sonMesaj = (TextView) findViewById(R.id.sonmesaj);
sonMesaj.setText("Tebrikler Bildiniz!");
LinearLayout tekrarOynaLayout = (LinearLayout)findViewById(R.id.yenidenOyna);
tekrarOynaLayout.setVisibility(View.VISIBLE);
}
}
}
public void sonrakiBolum(View view) {
TextView bilgiEkrani = (TextView) findViewById(R.id.bilgiEkrani);
TextView bilgiEkrani2 = (TextView) findViewById(R.id.bilgiEkrani2);
TextView bolumEkrani = (TextView) findViewById(R.id.bolum);
bolumEkrani.setText("Bölüm: " + bolum);
TextView seviyeEkrani = (TextView) findViewById(R.id.seviye);
seviyeEkrani.setText("Seviye: " +seviye);
if(bolum%5 == 0){
bolum =0;
seviye +=1;
gameScale +=10;
}
bilgiEkrani2.setText("");
LinearLayout tekraroynaLayout = (LinearLayout) findViewById(R.id.yenidenOyna);
tekraroynaLayout.setVisibility(View.INVISIBLE);
TextView numbersil = (TextView) findViewById(R.id.userGuess);
numbersil.setText("");
Random randomGenerator = new Random();
randomNumber = randomGenerator.nextInt(gameScale) + 1;
Specc randomSayi = new Specc();
randomSayi.num = randomNumber;
if (randomSayi.isSquare()) {
bilgiEkrani.setText("Sayımız " + "1-" + gameScale + " arasında başka bir sayının karesidir.");
} else if (randomSayi.isPrime()) {
bilgiEkrani.setText("Sayımız " + "1-" + gameScale + " arasında bir asal sayıdır.");
} else {
bilgiEkrani.setText("Sayımız " + "1-" + gameScale + " arasında belirli bir özelliği olmayan bir sayıdır.");
}
}
public void updateTimer(int secondsLeft){
TextView sureEkrani = (TextView) findViewById(R.id.sure);
int seconds = secondsLeft;
sureEkrani.setText("Süre: " +Integer.toString(seconds));
if(secondsLeft == 0 ){
sureEkrani.setText("Süre:0");
}
}
public void timerControl(Boolean sayi){
if(isTimerActive) {
final TextView sureEkrani = (TextView) findViewById(R.id.sure);
timer = new CountDownTimer(60000, 1000) {
@Override
public void onTick(long l) {
updateTimer((int) l / 1000);
}
@Override
public void onFinish() {
sureEkrani.setText("0");
}
};
timer.start();
} else {
TextView sureEkrani = (TextView) findViewById(R.id.sure);
sureEkrani.setText("0");
timer.cancel();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
timerControl(true);
guessButtonPlayer = MediaPlayer.create(this, R.raw.guessbutton);
silButtonPlayer = MediaPlayer.create(this, R.raw.silbutton);
numberButtonPlayer = MediaPlayer.create(this, R.raw.numberbuttons);
winButtonPlayer = MediaPlayer.create(this, R.raw.winmusic);
TextView userGuess = (TextView) findViewById(R.id.userGuess);
userGuess.setInputType(InputType.TYPE_NULL);
if (Build.VERSION.SDK_INT >= 11){
userGuess.setRawInputType(InputType.TYPE_CLASS_TEXT);
userGuess.setTextIsSelectable(true);
}
Random randomGenerator = new Random();
randomNumber = randomGenerator.nextInt(gameScale)+1;
Specc randomSayi = new Specc();
randomSayi.num = randomNumber;
if(randomSayi.isSquare()){
TextView bilgiEkrani = (TextView) findViewById(R.id.bilgiEkrani);
bilgiEkrani.setText("Sayımız "+"1-"+gameScale+" arasında başka bir sayının karesidir.");
} else if(randomSayi.isPrime()) {
TextView bilgiEkrani = (TextView) findViewById(R.id.bilgiEkrani);
bilgiEkrani.setText("Sayımız "+"1-"+gameScale+" arasında bir asal sayıdır.");
} else {
TextView bilgiEkrani = (TextView) findViewById(R.id.bilgiEkrani);
bilgiEkrani.setText("Sayımız "+"1-"+gameScale+" arasında belirli bir özelliği olmayan bir sayıdır.");
}
}
}