コンテキストを作成しようとしていActionBar
ます。Android devpage のサンプルを使用しましたが、まだ機能していません。onitemlongclick にイベントリスナーを設定しましたが、setSelected(true)
何もしていないようです。が開かれているため、イベントがトリガーされていることはわかっていactionmode
ますが、アイテムは選択されていません。
longclicklistener
は 内にあり、の複数のインスタンスを保持するアクティビティ内のfragment
によって保持されます。ページからアイテムを選択して、その選択内容で何かを実行できるようにしたいと考えています。viewpager
fragment
私の現在のコード:
フラグメント:
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;
}
};