2011-01-11 7 views
0

クリックするとキャンバスがイメージファイルに保存され、別のアクティビティが呼び出されます。私が抱えている問題は、テストを通して、ユーザーがアクティビティが呼び出される前に2回ボタンをクリックして2つのファイルが書き込まれることに気づいたことです。短いスパンでウィジェットが何度もクリックされるのを防ぐ

また、別のアクティビティのスピナーで同じ問題が発生しました。連続して2回クリックすると、すべてのスピナー項目を含む2つのリストビューがポップアップ表示されます。

私はこれほど幸運なことにGoogleにこれを試みてきました。これには簡単な修正がありますか?

ありがとうございました。

答えて

0

これはうまくいきましたが、これを実現するには両方の提案を実装する必要がありました。あなたに+1してください。

私は不確定進捗ダイアログを使用し、そのようなブール値:

Button send = (Button) findViewById(R.id.send); 
    send.setOnClickListener(new OnClickListener() {   
     @Override 
     public void onClick(View v) { 
      if (mAllowSave) { 
       mAllowSave = false; 
       showDialog(SAVING_DIALOG); 
       mSaveFileThread = new SaveFileThread(handler); 
       mSaveFileThread.start(); 
      } 
     } 
    }); 
2

キャンバスを保存するメソッドが呼び出されるとすぐにtrueに設定するmClickBeingProcessedのような単純なブール値を設定できます。それが本当であれば何もしません。それ以外の場合はキャンバスを保存して他のアクティビティを呼び出します。あなたのメソッド(または他の処理)の終わりに、それをfalseに戻します。

もう1つの方法は、最新のクリックのタイムスタンプを保存することです。前のクリックのX時間内にクリックが発生した場合(これは何らかの値で、おそらく1000ms)、無視されます。

+0

は、どのように私は質問を見た前に7分を書きたかったメッセージを書きました! +1: –

+2

それは私の突然の力です。私がラインに入ったとき、彼らは時間をコントロールするようなクールなものからすべてだったが、未来への7分の見通しは大丈夫だった。 –

+0

私はこれを考えましたが、実際の解決策ではなくハックのように思えます。ウィジェットごとにブール値を実装する必要がありますか?それはばかげている。 – user432209

関連する問題