私のアンドロイドアプリケーションには単純なボタンonClickListenerがありますが、それはデータベースにいくつかのものを書き込むことです。それは、今、これはうまく動作しますが、私は十分に速くボタンをタップした場合、私は何もしてからキーリスナーを防ぐことができますどのように閉じられたDBエラーandroid locking eventListenerとeven handling
java.lang.IllegalStateException: database not open
を取得し、この
private void setEventListeners(){
mSpecialViewClass.getSubmitButton().setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
handleSubmitClick();
}
});
}
private void handleSubmitClicks(){
if (counter<0){
writeCounterToDb();
} else {
//do some stuff
closeDatabase();
}
}
ようになります前のキーイベントがハンドリングされる前に?
編集:一部のユーザーは、Activity.onDestroy()でデータベースを閉じることを提案しました。これはかなりいいですし、彼は答えを削除しました。それは私の問題の素晴らしい回避策ですが、まだ私が探している解決策ではありません。
また、ボタンを無効にして、さまざまな位置でボタンを有効にすると、問題が残ります。あまりにも速くボタンをタップすると、私はいつも関数が1回だけ呼び出されることを達成することができるようです。
どこのデータベースが開かれていますか? – Pikaling
私はデータベースを 'onCreate'イベントで開きます。なぜなら、それ以前にやることがいくつかあるからです。 'closeDatabase()'は実際には 'finishActivity()'ですが、これは質問には関係しないと思いました。私はこれが役立つことを願っています – zidarsk8