3

コンテキストを作成しようとしていActionBarます。Android devpage のサンプルを使用しましたが、まだ機能していません。onitemlongclick にイベントリスナーを設定しましたが、setSelected(true)何もしていないようです。が開かれているため、イベントがトリガーされていることはわかっていactionmodeますが、アイテムは選択されていません。

longclicklistenerは 内にあり、の複数のインスタンスを保持するアクティビティ内のfragmentによって保持されます。ページからアイテムを選択して、その選択内容で何かを実行できるようにしたいと考えています。viewpagerfragment

私の現在のコード:

フラグメント:

AdapterView.OnItemLongClickListener onLongClick = new AdapterView.OnItemLongClickListener() {
    // Called when the user long-clicks on someView
    @Override
    public boolean onItemLongClick(AdapterView<?> adapterView, View view,
            int i, long l) {
        MainActivity parent = (MainActivity)getActivity();
        if (parent.actionMode != null) {
            return false;
        }

        parent.actionMode = getActivity().startActionMode(parent.actionModeCallback);
        view.setSelected(true);
        return true;
    }
};

アクティビティのアクション モード コールバック

public ActionMode.Callback actionModeCallback = new ActionMode.Callback() {

    // Called when the action mode is created; startActionMode() was called
    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        // Inflate a menu resource providing context menu items
        MenuInflater inflater = mode.getMenuInflater();
        inflater.inflate(R.menu.contextual_actionbar, menu);
        return true;
    }

    // Called each time the action mode is shown. Always called after onCreateActionMode, but
    // may be called multiple times if the mode is invalidated.
    @Override
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
        return false; // Return false if nothing is done
    }

    // Called when the user selects a contextual menu item
    @Override
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        switch (item.getItemId()) {
            case R.id.menu_remove_list:
                mode.finish(); // Action picked, so close the CAB
                return true;
            default:
                return false;
        }
    }

    // Called when the user exits the action mode
    @Override
    public void onDestroyActionMode(ActionMode mode) {
        actionMode = null;
    }
};
4

1 に答える 1