ビューにはそれぞれ独自のActionModeが必要なウィジェットがいくつかあります。ユーザーがアクションバーの外をタップすると、ActionModeが自動的に閉じないことがわかります。したがって、ユーザーはあるコントロールのActionModeを開始し、別のコントロールをタップ(私の場合はlongclick)し、最初のアクションバーの上に2番目のActionBarをスタックすることは簡単に可能です。これはプログラミングロジックを混乱させます。actionmodeが既に存在するかどうかを検出する方法
私は現在のActionModeをアクティビティレベルのメンバ変数で追跡し、新しいものが必要な場合は現在のものを閉じます。どのように、これは私のコードを読んで維持するのが面倒です。さらに、ユーザーがアクションバーの外に何かをタップするとすぐにそれを解除することをお勧めします。
これを処理するには良い方法がありますか?
ただし、ユーザーがサブクラス化していないEditTextをクリックしたとします。今不適切なアクションバーをどうやって解消しますか? –
私があなたを理解していれば、実現したグローバル変数 'ActionModemMode;'を 'onCreateActionMode(...)'メソッドで現在のアクションモードで満たしてから、 'mMode .finish() '現在のアクションモードを終了する必要があるとき – user1049280
そうです、私はそれを取得します。しかし、どのようにfinish()を呼び出すべきかを知っていますか?つまり、ユーザーがクリックできる場所が多数あります。すべてのオブジェクトをサブクラス化し、MotionEvent.ACTION_DOWNを確認してからfinish()を呼び出しますか?それは非常にエラーを起こしやすいでしょう、これらのビットのコードは、場所のいたるところにひっくり返ります。 –