0

Android Honeycomb 以降でコンテキスト アクション バーを使用するには、通常、SDK_INT11 以降であることを確認してから次の手順に進みます。mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);

現在、ActionBarSherlock を使用して、これを古いデバイスに移植しようとしています。今ではCHOICE_MODE_MULTIPLEの代わりにを使用CHOICE_MODE_MULTIPLE_MODALし、 の中でOnItemLongClickListenerを呼び出すことができますgetSherlockActivity().startActionMode(myActionModeCallback);

問題は、最初に ListView の項目を長押しすると、コンテキスト アクション バーが正しく表示されることです。

しかし、別の ListView 項目をクリックすると、その項目が選択され、その直後にクリック リスナーが起動されます。(私はそのリスナーを使用しているので、ユーザーがアイテムをクリックすると、ユーザーがアイテムを編集できる新しいアクティビティが開きます。この場合、アイテムが選択され、すぐにこの新しいアクティビティが開始され、コンテキストが台無しになりますアクションバー)

あってはならないことなのですが、何か間違ったことをしているのだと思います。以前のリスナーに戻すことができる場所OnListItemClickを呼び出すまで、リスナーをnullに設定することを考えましたが、それを行うためのよりクリーンな方法が必要だと思います。ActionMode.finish()

4

1 に答える 1

0

あなたの質問を理解できる限り、ここに解決策があります。

最初に、次のような選択されたアイテムがあるかどうかを確認できます

boolean hasCheckedItems = yourListAdapter.getSelectedCount() > 0;

次に、次の条件を確認できます

if (hasCheckedItems && ActionModeObject == null)
//there are some selected items, start the ActionMode 

else if (!hasCheckedItems && ActionModeObject != null)
// there no selected items, finish the ActionMode
ActionModeObject.finish();

if (ActionModeObject != null)
//Action Button Clicked
于 2013-08-17T19:18:26.147 に答える