0

3 つのフラグメントを持つスワイプ可能なタブを持つアクティビティがあります。最初のフラグメントは ListView です。リストアイテムを長押ししたときにアクションモードを表示する必要があります。そして、次のコードは正常に動作します。しかし、アクションアイテムをクリックすると、onActionItemClicked が呼び出されることはなく、代わりに actionView (タブ) の背後にあるビューがクリックされます。

これはアクション モードのスクリーンショットです。メニュー項目がバックグラウンド ビュー (タブ) と混在していることがわかります。「FOLDERS」というテキストは、実際には acionview の背後にあります。ここに画像の説明を入力

これは私が他のデバイスで得たものですここに画像の説明を入力 ここに私のActionMode.Callbackがあります

private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {

    // called when the action mode is created; startActionMode() was called
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
      // Inflate a menu resource providing context menu items
      MenuInflater inflater = mode.getMenuInflater();
      // assumes that you have "contexual.xml" menu resources
      inflater.inflate(R.menu.actions, menu);
      return true;
    }


    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
      return false; // Return false if nothing is done
    }

    // called when the user selects a contextual menu item
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        debug("onActionItemClicked");
        mode.finish();
        return false;

    }

    // called when the user exits the action mode
    public void onDestroyActionMode(ActionMode mode) {
        debug("onDestroyActionMode");
    }
  };

アイテム longClick リスナー

list.setOnItemLongClickListener(new OnItemLongClickListener(){

            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // TODO Auto-generated method stub
                list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
                 mActionMode = getActivity()
                            .startActionMode(mActionModeCallback);

                        return true;
            }

        });

この問題は、android L をポートレート モードにした nexus 5 でのみ発生します。他のデバイスと nexus 5 のランドスケープ モードで動作します。どうすればよいかわかりません。誰か助けてください...

4

1 に答える 1