2011-01-08 18 views
0

私は、onCreateContextMenu()およびonContextItemSelected()を介してコンテキストメニューをサポートする基本ListActivityを持っています。これらのメソッドのいずれかが失敗し、コンテキストメニューが生成されない場合、現在のデフォルト機能はonListItemClick()を起動するように見えます。私には、意図的にコンテキストメニューに入るためにユーザが指を押さえていて、そのアイテムを開いていると非常に混乱し、アプリでこのジェスチャが放置された場合にそれらを単に放棄することができます。onCreateContextMenu()が失敗した場合、onListItemClick()をキャンセルします。

私がしたいのは、失敗したときに便利なメッセージでToastを起動し、その後onListItemClickをキャンセルして、リスト項目が開かないようにすることです。 Toastは動作していますが、onCreateContextMenu()またはonContextItemSelected()の中からエラーが発生する場所からクリックアクションをキャンセルすることができるかどうかを判断しようとしています。

ありがとうございます!

+1

「これらの方法のいずれかが失敗し、コンテキストメニューが生成されない場合」 - なぜ失敗するのですか? – CommonsWare

+0

あなたが正しいはずはありませんが、サンプルノートパッドアプリの例として、キャストエラー、空のカーソルのテストなどに関連するtry/catchブロックがあり、失敗した場合はメニューが表示されません。 –

答えて

0

私はこれを使用しており、うまくいくと思われる解決策があります。 booleanフィールドmIgnoreClickを作成し、onCreate()でfalseに設定しました。次に、onCreateContextMenu()で、コンテキストメニューの生成中にエラーが発生した場合は、mIgnoreClickをtrueに設定し、この機能が現在利用できないことを警告するユーザにToastを送信します。最後に、onListItemClick()では、mIgnoreClickの状態をチェックします。 falseの場合、項目が表示され、trueの場合は何も行われず、mIgnoreClickがfalseに設定されて、ユーザーはlistitemをクリックして必要に応じて開くことができます。

したがって、メニューが正しく生成されなかった場合、私は何もしません。彼らはアイテムを開くことを決して意図していなかったので、この動作は私のニーズを満たしています。

ポール

関連する問題