你好,我是 android 新手,我在开发应用程序时遇到了问题。
我有一个带有计时器和关闭按钮的模式。当计时器结束时,模态将关闭,或者在计时器结束之前使用关闭按钮关闭模态。这里的图片:
但是当我按下关闭按钮手动关闭模态时,运行计时器的方法仍在运行并尝试关闭模态,尽管模态已经关闭,这是导致我的应用程序崩溃的问题。错误是
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
我如何在按下关闭按钮时停止该方法?
这是我的定时器方法,在定时器结束时关闭模态:
public void startTimer(){
int hoursToGo = 0;
int minutesToGo = 0;
int secondsToGo = 10;
int millisToGo = secondsToGo*1000+minutesToGo*1000*60+hoursToGo*1000*60*60;
new CountDownTimer(millisToGo,1000) {
@Override
public void onTick(long millis) {
int seconds = (int) (millis / 1000) % 60 ;
int minutes = (int) ((millis / (1000*60)) % 60);
String text = String.format("%02d:%02d",minutes,seconds);
tv.setText(text);
}
@Override
public void onFinish() {
tv.setText("Request Timeout");
}
}.start();
final AlertDialog d = (AlertDialog) getDialog();
final Timer timer2 = new Timer();
timer2.schedule(new TimerTask() {
public void run() {
d.dismiss();
timer2.cancel(); //this will cancel the timer of the system
Intent i = new Intent(getActivity(), PromoActivity.class);
i.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP );
getActivity().startActivityForResult(i,0);
}
}, 10000);
}
我在这里执行方法:
public void onResume(){
super.onResume();
startTimer();
}
最佳答案
当你按下关闭按钮时你必须调用timer2.cancel();
关于java - 如何在 Android Studio 完成之前停止正在运行的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45916313/