Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:SetMultichoiceModelListener(上下文操作模式)不是';t立即调用_Java_Android_Android Menu - Fatal编程技术网

Java Android:SetMultichoiceModelListener(上下文操作模式)不是';t立即调用

Java Android:SetMultichoiceModelListener(上下文操作模式)不是';t立即调用,java,android,android-menu,Java,Android,Android Menu,我有一个列表视图,当我长时间点击列表时,我想显示一个菜单(上下文操作模式)。当我第一次单击时,它不起作用,但其他时候它起作用。我注意到总是调用onItemLongClick,但是上下文操作模式只在第二次启动。 这是我的密码: public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); stringList = new Linke

我有一个列表视图,当我长时间点击列表时,我想显示一个菜单(上下文操作模式)。当我第一次单击时,它不起作用,但其他时候它起作用。我注意到总是调用onItemLongClick,但是上下文操作模式只在第二次启动。 这是我的密码:

 public void onActivityCreated(Bundle savedInstanceState)
 {
    super.onActivityCreated(savedInstanceState);

    stringList = new LinkedList<>();
    stringList.add("A");
    stringList.add("B");
    stringList.add("C");
    stringList.add("D");
    stringList.add("E");
    listView = getListView();
    arrayAdapter = new ArrayAdapter<String>(getActivity(),R.layout.support_simple_spinner_dropdown_item,stringList);
    listView.setAdapter(arrayAdapter);

    final AbsListView.MultiChoiceModeListener choiceModeListener = new AbsListView.MultiChoiceModeListener()
    {
        @Override
        public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked)
        {
            Toast.makeText(getActivity(),position+"",Toast.LENGTH_SHORT).show();
        }

        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu)
        {
            MenuInflater menuInflater = mode.getMenuInflater();
            menuInflater.inflate(R.menu.contentmenu2,menu);
            return true;
        }

        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            return false;
        }

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            return false;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {

        }
    };

    listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener()
    {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id)
        {
            listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
            listView.setMultiChoiceModeListener(choiceModeListener);
            Toast.makeText(getActivity(),"LONG CLICK",Toast.LENGTH_SHORT).show();
            return true;
        }
    });

}
activitycreated上的公共void(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
stringList=新的LinkedList();
stringList.添加(“A”);
字符串列表。添加(“B”);
添加(“C”);
stringList.添加(“D”);
字符串列表。添加(“E”);
listView=getListView();
arrayAdapter=新的arrayAdapter(getActivity(),R.layout.support\u simple\u spinner\u dropdown\u item,stringList);
setAdapter(arrayAdapter);
final AbsListView.MultichoiceModelListener ChoiceModelListener=新建AbsListView.MultichoiceModelListener()
{
@凌驾
public void onItemCheckedStateChanged(ActionMode模式、int位置、长id、布尔选中)
{
Toast.makeText(getActivity(),position+“”,Toast.LENGTH_SHORT).show();
}
@凌驾
公共布尔onCreateActionMode(ActionMode模式,菜单)
{
MenuInflater MenuInflater=mode.getMenuInflater();
菜单平坦。充气(右菜单。内容菜单2,菜单);
返回true;
}
@凌驾
公共布尔onPrepareActionMode(操作模式,菜单){
返回false;
}
@凌驾
公共布尔值onActionItemClicked(ActionMode模式,菜单项){
返回false;
}
@凌驾
公共void onDestroyActionMode(ActionMode模式){
}
};
setOnItemLongClickListener(新的AdapterView.OnItemLongClickListener()
{
@凌驾
公共布尔值长单击(AdapterView父项、视图、整型位置、长id)
{
listView.setChoiceMode(listView.CHOICE\u MODE\u MULTIPLE\u MODE);
setMultichoiceModelListener(ChoiceModelListener);
Toast.makeText(getActivity(),“长点击”,Toast.LENGTH_SHORT.show();
返回true;
}
});
}

我绕过了这部分代码的问题模块:

    listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
    listView.setMultiChoiceModeListener(choiceModeListener);

    listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener()
    {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id)
        {
            listView.setMultiChoiceModeListener(choiceModeListener);
            return true;
        }
    });
listView.setChoiceMode(listView.CHOICE\u MODE\u MULTIPLE\u model);
setMultichoiceModelListener(ChoiceModelListener);
setOnItemLongClickListener(新的AdapterView.OnItemLongClickListener()
{
@凌驾
公共布尔值长单击(AdapterView父项、视图、整型位置、长id)
{
setMultichoiceModelListener(ChoiceModelListener);
返回true;
}
});
这样,上下文菜单启动是因为我调用了两次,但我不明白为什么要调用两次