Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.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 检索LinearLayout中打开上下文菜单的TextView的id_Android - Fatal编程技术网

Android 检索LinearLayout中打开上下文菜单的TextView的id

Android 检索LinearLayout中打开上下文菜单的TextView的id,android,Android,我正在以编程方式使用TextView填充LinearLayout,在其中,我根据从数据库和用户首选项填充的实体放置文本 我现在尝试在这些文本视图中的每一个上添加一个上下文菜单,以允许用户删除该特定条目(从而删除对象,从而删除db行) 我可以长时间按下来打开contextmenu,但我看不到任何方法来获取与该菜单关联的TextView的id 事实上,此文件中的所有信息都引用了ListView(我没有使用它——在ScrollView中有一个ListView存在问题)和许多引用适配器(我没有使用它,数

我正在以编程方式使用TextView填充LinearLayout,在其中,我根据从数据库和用户首选项填充的实体放置文本

我现在尝试在这些文本视图中的每一个上添加一个上下文菜单,以允许用户删除该特定条目(从而删除对象,从而删除db行)

我可以长时间按下来打开contextmenu,但我看不到任何方法来获取与该菜单关联的TextView的id

事实上,此文件中的所有信息都引用了ListView(我没有使用它——在ScrollView中有一个ListView存在问题)和许多引用适配器(我没有使用它,数据在呈现之前需要进行彻底的处理)

LinearLayout是用XML指定的。我在执行DB查找的AsyncTask的onPostExecute中向其添加TextView

我尝试用两种方式注册上下文菜单:Activity.registerForContextMenu(TextView)和TextView.setOnCreateOptionsMenuListener(新…)

以下部分存在问题:

@Override
public boolean onContextItemSelected(MenuItem item) {
    ContextMenuInfo info = (ContextMenuInfo) item.getMenuInfo();
    switch (item.getItemId()) {
        case R.id.delete_entry:
              // how do I get the TextView id here???
            return true;
        default:
            return super.onContextItemSelected(item);
    }
}

ContextMenuInfo变量为空,没有帮助。

这个问题的一个答案来自阅读

虽然有点粗糙,但它确实有效,现在还可以

您确实可以在onCreateContextMenu方法中获取视图变量作为参数。然后,将该变量存储在其他具有类作用域的变量中是很简单的,您可以在onContextItemSelected方法中使用该类作用域

例如:

private TextView contextTextView = null;

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.tankbeurt_wissen, menu);
    contextTextView = (TextView) v;
}

@Override
public boolean onContextItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.delete_entry:
                System.out.println(contextTextView.getId()+" called this method");
            return true;
        default:
            return super.onContextItemSelected(item);
    }
}

希望这对别人的帮助和对我的帮助一样大。

我在打完这篇文章后也看到了它。。。想想看,我在谷歌上花了好几个小时,现在却不得不把脚伸进嘴里。