因此,在尝试减少 EditText 的值时,我遇到了一个棘手的问题。让我解释一下,我有一些 CountDownTimers,当第二个计时器结束时,之前设置的值需要递减,这样计时器就不会无限重复。
这是我的代码:
public void poslijeDelaya() {
int counterInt = Integer.parseInt(editTextNOI.getText().toString());
if (counterInt > 0) {
String tekstTrci = editTextHIIVrijeme.getText().toString();
long longTrci = Long.parseLong(tekstTrci);
CountDownTimer timerTrci = new CountDownTimer(longTrci * 1000 + 100, 1000) {
@Override
public void onTick(long millisUntilFinished) {
updateTimer((int) millisUntilFinished / 1000);
}
@Override
public void onFinish() {
textViewGlavniTimer.setText("00:00");
textViewNatpisZaOpisAktivnosti.setText(getResources().getString(R.string.liiState));
String tekstHodaj = editTextLIIVrijeme.getText().toString();
long longHodaj = Long.parseLong(tekstHodaj);
CountDownTimer timerHodaj = new CountDownTimer(longHodaj * 1000 + 100, 1000) {
@Override
public void onTick(long millisUntilFinished) {
updateTimer((int) millisUntilFinished / 1000);
}
@Override
public void onFinish() {
counterInt --;
textViewGlavniTimer.setText("00:00");
textViewNatpisZaOpisAktivnosti.setText(getResources().getString(R.string.hiiState));
poslijeDelaya();
}
}.start();
}
}.start();
} else {
textViewNatpisZaOpisAktivnosti.setText("Done");
}
}
});
棘手的部分在 counterInt --;
部分。它说该变量需要声明为final,因为它是从内部类访问的,所以我将 int counterInt = Integer.parseInt(editTextNOI.getText().toString());
设置为 final int counterInt = Integer.parseInt(editTextNOI.getText().toString());
你猜怎么着?
它说它无法为最终变量赋值。
关于如何让 Android Studio 停止骚扰我有什么想法吗?
最佳答案
您可以将 int
设为类变量,但是这样您可能会遇到从多个线程访问该值的问题。相反,请将 int
类设置为 CountDownTimer
类中的级别。像这样:
CountDownTimer timerTrci = new CountDownTimer(longTrci * 1000 + 100, 1000) {
int counterInt = Integer.parseInt(editTextNOI.getText().toString()); <---- add your variable here
@Override
public void onTick(long millisUntilFinished) {
...
}
....
CountDownTimer timerHodaj = new CountDownTimer(longHodaj * 1000 + 100, 1000) {
@Override
public void onTick(long millisUntilFinished) {
updateTimer((int) millisUntilFinished / 1000);
}
@Override
public void onFinish() {
counterInt --; <-- now this is accessible
....
}
}.start();
}
}.start();
关于java - Android内部类中EditText转int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37471645/