java - Android内部类中EditText转int

标签 java android timer

因此,在尝试减少 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/

相关文章:

java - 使用关于持久性和 XML 的 InputStream 的最佳方式

java - 我的阵列没有上升

Java : Unable to change 'Content-Disposition' attribute in the Header for a response

android - 安装 Studio 2.2.1 后出现 "Gradle project refresh failed"错误(无编码!)

java - 终止应用程序后继续运行计时器

java - java中JPG图像的像素的精确值

android - 是否可以在 Canvas 中绘制 ListView ?

android - 未定义 PendingIntent 类型的方法 putExtra(String, String)

c++ - 如果我使用 scanf 程序终止

c - 用C模拟javascript的setTimeout和setInterval