タイマーを設定するコードがいくつかありますが、ユーザーが使用中にタイマーを設定した場合、タイマーを実行するランナブルを削除して再度開始する必要があります。しかし、実行可能なハンドラー コールバックが存在せず、このコードが呼び出されると、アプリケーションがクラッシュします。そのため、ハンドラーが実行されているかどうかを確認する必要があります。実行されている場合は終了して再起動しますが、ドキュメントやその他の Stackoverflow の質問を調べても、これが可能かどうかはわかりません。
これが私のコードです。実行可能なハンドラーが存在する場合にのみ実行する必要があるコードについてコメントしました。
submitTimer.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
String s = timer.getText().toString();
if(!s.equals(""))
{
//I NEED TO CHECK A RUNNABLE HANDLER EXISTS AND IF SO THEN RUN THIS CODE, IF NOT IGNORE THIS CODE
Map.handler.removeCallbacks(Map.getRunnable());
Map.runnable.run();
//I NEED TO CHECK A RUNNABLE HANDLER EXISTS AND IF SO THEN RUN THIS CODE, IF NOT IGNORE THIS CODE
int l = Integer.parseInt(s);
Map.timerinmins = l;
timer.setHint("Current Timer is "+Map.timerinmins);
timer.setText("");
Toast.makeText(Preferences.this, "Timer is set!", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(Preferences.this, "No value was entered", Toast.LENGTH_SHORT).show();
}
}
});
ハンドラーの現在の状態を確認する方法を理解するのを手伝ってくれる人はいますか?