Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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
Android 长时间点击ListFragment_Android_Android Fragments_Long Click - Fatal编程技术网

Android 长时间点击ListFragment

Android 长时间点击ListFragment,android,android-fragments,long-click,Android,Android Fragments,Long Click,我正在处理一个ListFragment并进行onListItemClick。一切正常,但现在我想使用长项单击(例如setOnItemLongClickListener(活动的new OnItemLongClickListener()),如何在片段中使用它 谢谢!是的,tsync发布的解决方案适合我。我也遇到了同样的问题,认为这是不可能的。我尝试了上述建议,如下所示: public class ProjectsFragment extends ListFragment { @Override

我正在处理一个ListFragment并进行onListItemClick。一切正常,但现在我想使用长项单击(例如setOnItemLongClickListener(活动的new OnItemLongClickListener()),如何在片段中使用它


谢谢!

是的,tsync发布的解决方案适合我。我也遇到了同样的问题,认为这是不可能的。我尝试了上述建议,如下所示:

public  class ProjectsFragment extends ListFragment {

@Override
public void onActivityCreated(Bundle savedState) {
    super.onActivityCreated(savedState);

    getListView().setOnItemLongClickListener(new OnItemLongClickListener() {

        @Override
        public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            Toast.makeText(getActivity(), "On long click listener", Toast.LENGTH_LONG).show();
            return true;
        }
    });
公共类项目片段扩展ListFragment{
@凌驾
ActivityCreated上的公共无效(Bundle savedState){
super.onActivityCreated(savedState);
getListView().setOnItemLongClickListener(新的OnItemLongClickListener()){
@凌驾
长单击(AdapterView arg0、视图arg1、,
整数arg2,长arg3){
Toast.makeText(getActivity(),“长时间单击侦听器”,Toast.LENGTH_long.show();
返回true;
}
});
它成功了!

这对我很有用

getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
    public boolean onItemLongClick(AdapterView<?> av, View v, int position, long id) {
        //Get your item here with the position                   
        return true;
    }
});
getListView().setOnItemLongClickListener(新的OnItemLongClickListener()){
长点击(AdapterView av、视图v、整型位置、长id){
//把你的物品带到这里
返回true;
}
});

根据您想要了解的内容,您可以对上下文菜单使用给定的方法:

首先注册长按的视图类(在片段类中):

然后实现这两种方法,以创建上下文菜单,并在单击菜单项时执行所需操作:

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);

    MenuInflater inflater = this.getActivity().getMenuInflater();
    inflater.inflate(R.menu.my_context_menu, menu);
}

@Override
public boolean onContextItemSelected(MenuItem item) {

    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
    switch (item.getItemId()) {

        case R.id.add: // <-- your custom menu item id here
            // do something here
            return true;

        default:
            return super.onContextItemSelected(item);
    }
}
@覆盖
public void onCreateContextMenu(ContextMenu菜单,视图v,ContextMenu.ContextMenuInfo菜单信息){
super.onCreateContextMenu(menu,v,menuInfo);
MenuInflater充气器=此.getActivity().getMenuInflater();
充气器。充气(右菜单。我的上下文菜单,菜单);
}
@凌驾
公共布尔值onContextItemSelected(MenuItem项){
AdapterView.AdapterContextMenuInfo信息=(AdapterView.AdapterContextMenuInfo)项。getMenuInfo();
开关(item.getItemId()){

case R.id.add://我找到了方法:getListView().setOnItemLongClickListener(新的OnItemLongClickListener(){@Override公共布尔onItemLongClick(AdapterView参数AdapterView,View参数视图,int位置,long参数长){//TODO返回true;}};很好!只是想补充一点,您不能将registerForContextMenu与setOnItemLongClickListener结合起来。这可能对某些人来说很明显,但对我来说不是。另外,很高兴知道行id可以从info.id中检索。今天我第一次增加了每个答案,因为这是我将对longclick事件执行的操作。这更好地回答了此代码n需要转到片段中的
onViewCreated
,返回true或false是否重要@Narayanan@Manny265return false将运行onclick侦听器,return true将阻止此操作
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);

    MenuInflater inflater = this.getActivity().getMenuInflater();
    inflater.inflate(R.menu.my_context_menu, menu);
}

@Override
public boolean onContextItemSelected(MenuItem item) {

    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
    switch (item.getItemId()) {

        case R.id.add: // <-- your custom menu item id here
            // do something here
            return true;

        default:
            return super.onContextItemSelected(item);
    }
}