比较onCreateContextMenu中的视图

时间:2013-02-01 22:38:06

标签: android view contextmenu

我的活动包含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

          }

任何人都可以指导我吗?我一直在找这个星期...

1 个答案:

答案 0 :(得分:0)

不是最终的解决方案,因为发生的事情实际上可能是一个错误,但只是将EditText移出ListView标题但是移到主XML文件允许我绕过这个问题。 / p>