【问题标题】:onItemLongClick is undefined?onItemLongClick 未定义?
【发布时间】:2013-10-23 12:40:57
【问题描述】:

我正在尝试在我的列表视图项目中实现长按,但它不起作用,并且我收到一个错误消息,显示为 undefined。代码如下:

protected void setOnItemLongClickListener(ListView l, View v, int position, long id) {
        super.onItemLongClick(l, v, position, id);// Error

        ApplicationInfo app = applist.get(position);
        try {
            Intent intent = packageManager
                    .getLaunchIntentForPackage(app.packageName);

            if (null != intent) {
                startActivity(intent);
            }
            } catch (ActivityNotFoundException e) {
                Toast.makeText(MainActivity.this, e.getMessage(),
                        Toast.LENGTH_LONG).show();
            } catch (Exception e) {
                Toast.makeText(MainActivity.this, e.getMessage(),
                        Toast.LENGTH_LONG).show();
            }

    }

有人知道如何解决这个问题吗?谢谢

【问题讨论】:

  • logcaterror line?
  • @David_D 查看我的编辑。该方法的 return type 错误。

标签: java android android-listview onlongclicklistener long-click


【解决方案1】:

造成这种情况的原因很可能是您没有implement 听众。类似的东西

public class ActivityName extends Activity implements OnItemLongClickListener{

尝试改变

protected void setOnItemLongClickListener

protected boolean setOnItemLongClickListener{
      // your code
      return true;

您需要为该方法使用正确的返回类型,即boolean 然后return true,以便侦听器知道它是成功的。

Docs

【讨论】:

  • 我已经写了工具但是什么都没有。总是The method onItemLongClick(ListView, View, int, long) is undefined for the type ListActivity
  • @David_D 在没有看到更多代码的情况下,我建议清理“项目 --> 清理...”,看看是否有帮助。另外,在方法之前添加@Override 注释。您也可以复制整个方法,将其删除,然后再粘贴回去。如果我没有按照它想要的顺序执行所有操作,我之前在需要这样做的地方遇到了 Eclipse 的问题。
【解决方案2】:

为 Listview 试试这个监听器:

istView.setOnItemLongClickListener(new OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            Toast.makeText(arg0.getContext(), ((TextView)arg1).getText(), Toast.LENGTH_SHORT).show();
            return false;
        }
    });

【讨论】:

  • 用这个监听器替换你的监听器。
【解决方案3】:

使用此代码

yourListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {

            //YOUR_CODE_HERE

            return false;
        }
    });

【讨论】:

  • 访问listView AdapterView 上的项目被占用。所以使用监听长点击事件的覆盖方法
【解决方案4】:

请更换

public class MainActivity extends Activity  implements OnItemLongClickListener

并添加未实现的方法

@Override
    public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {
        // TODO Auto-generated method stub
        return false;
    }

默认情况下,您可以通过右键单击 OnItemLongClickListener 选择快速修复来完成此操作

【讨论】:

  • 同样的问题..错误是:The method onItemLongClick(ListView, View, int, long) is undefined for the type ListActivity
  • 替换这个公共类 MainActivity extends Activity 实现 OnItemLongClickListener 添加其未实现的方法 @Override public boolean onItemLongClick(AdapterView> arg0, View arg1, int arg2, long arg3) { // TODO 自动生成的方法存根返回假; }
  • 我不明白的是;我必须把我的整个代码放在这个方法中吗?
  • 也许我做错了什么...你能把我的代码告诉我我必须做什么吗?我得到了很多错误:(也在其他活动中
【解决方案5】:

尝试将此行添加到您的列表适配器

        view.setOnLongClickListener(new View.OnLongClickListener() {

            @Override
            public boolean onLongClick(View v) {
                return false;
            }
        });

方法是尝试覆盖你的方法

@Override
public boolean onItemLongClick(
        AdapterView<?> parent, View view,
        int position, long id) {
    // TODO Auto-generated method stub
    return false;
}   

【讨论】:

  • mmh 我的列表变得不可点击,在列表适配器中添加代码:(
猜你喜欢
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 2018-11-11
  • 1970-01-01
  • 2013-11-06
  • 1970-01-01
  • 2010-10-21
相关资源
最近更新 更多