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 のランドスケープ モードで動作します。どうすればよいかわかりません。誰か助けてください...