Android 检索LinearLayout中打开上下文菜单的TextView的id
我正在以编程方式使用TextView填充LinearLayout,在其中,我根据从数据库和用户首选项填充的实体放置文本 我现在尝试在这些文本视图中的每一个上添加一个上下文菜单,以允许用户删除该特定条目(从而删除对象,从而删除db行) 我可以长时间按下来打开contextmenu,但我看不到任何方法来获取与该菜单关联的TextView的id 事实上,此文件中的所有信息都引用了ListView(我没有使用它——在ScrollView中有一个ListView存在问题)和许多引用适配器(我没有使用它,数据在呈现之前需要进行彻底的处理) LinearLayout是用XML指定的。我在执行DB查找的AsyncTask的onPostExecute中向其添加TextView 我尝试用两种方式注册上下文菜单:Activity.registerForContextMenu(TextView)和TextView.setOnCreateOptionsMenuListener(新…) 以下部分存在问题:Android 检索LinearLayout中打开上下文菜单的TextView的id,android,Android,我正在以编程方式使用TextView填充LinearLayout,在其中,我根据从数据库和用户首选项填充的实体放置文本 我现在尝试在这些文本视图中的每一个上添加一个上下文菜单,以允许用户删除该特定条目(从而删除对象,从而删除db行) 我可以长时间按下来打开contextmenu,但我看不到任何方法来获取与该菜单关联的TextView的id 事实上,此文件中的所有信息都引用了ListView(我没有使用它——在ScrollView中有一个ListView存在问题)和许多引用适配器(我没有使用它,数
@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);
}
}
希望这对别人的帮助和对我的帮助一样大。我在打完这篇文章后也看到了它。。。想想看,我在谷歌上花了好几个小时,现在却不得不把脚伸进嘴里。