こんにちは、私はアンドロイドで新しく、アプリケーションを開発するときに問題があります。Androidスタジオで終了する前に実行中のメソッドを停止する方法
私はタイマーと閉じるボタン付きのモーダルを持っています。タイマーが終了すると、モーダルは閉じるか、タイマーがクローズボタンで終了する前にモーダルを閉じます。ここで絵:
しかし、私はプレスを使用して手動で閉じるボタン、まだ実行されているタイマーを実行し、モーダルがすでに閉じているが、モーダルをクローズしようとしましたメソッドをモーダルを閉じ問題、これが原因とされ、私のアプリケーションがクラッシュしました。エラーがある
java.lang.NullPointerExceptionが:ヌル オブジェクト参照に ')java.lang.Stringでandroid.content.Context.getPackageNameを(' 仮想メソッドを呼び出す試み
方法閉じるボタンを押すとメソッドを停止できますか?ここで
タイマーが上にあるときに、モーダルを閉じるように私のタイマー方法:
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();
}
あなたはどこでもあなたのコード内でgetPackageName()メソッドを使用していますか?はいの場合は、そのコードもアップロードしてください。そうでない場合は、このNullPointerExceptionが指している行を、クラッシュログの次の行に記述するかどうかを教えてください。 android.content.ComponentNameの –
。(ComponentName.java:128) android.content.Intentにあります。 com.sharpcs2.android.ui.fragment.BarcodeModalFragment $ 3.runで(Intent.java:4667) java.util.Timer $ TimerImpl.runで(BarcodeModalFragment.java:151) (Timer.java:284) –
BarcodeModalFragment .java:151は: インテントi =新しいインテント(getActivity()、PromoActivity.class); –