我的活动包含EditText
框和ListView
。我也Override
onCreateContextMenu
这样:
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
android.view.MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.comments_context, menu);
menu.setHeaderTitle("Available Actions");
Log.d("v: ", String.valueOf(v));
MenuItem Edit = menu.findItem(R.id.editComment);
MenuItem Delete = menu.findItem(R.id.deleteComment);
AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
int position = info.position;
ListView lv = (ListView) v;
int firstVisible = lv.getFirstVisiblePosition();
View rowView = lv.getChildAt(position - firstVisible);
ReviewUser = ((TextView) rowView.findViewById(R.id.labelReviewCommentUser)).getText()
.toString();
ReviewComment = ((TextView) rowView .findViewById(R.id.labelReviewComment)).getText().toString();
这是问题所在。当我长按onCreateContext
框以进行剪切/复制/粘贴/等时,系统可以调用EditText
。当您长按我的ListView
时也可以调用它。当系统从EditText
调用onCreateContextMenu时,我在最后一行上方的两个TextViews处出现空崩溃。
以下是解决方案:我需要在创建onCreateConextMenu
时比较视图。但是,我不知道如何做到这一点,无法在任何地方找到解决方案。我有Logg' ed View v以及我活动中的所有其他视图,它总是指向我ListView
...
如何创建代码:
if (view passed in is from ListView) {
MenuItem Edit = menu.findItem(R.id.editComment);
MenuItem Delete = menu.findItem(R.id.deleteComment);
// do other things
}
任何人都可以指导我吗?我一直在找这个星期...
答案 0 :(得分:0)
不是最终的解决方案,因为发生的事情实际上可能是一个错误,但只是将EditText
移出ListView
标题但是移到主XML文件允许我绕过这个问题。 / p>