Android EditText setOnCreateContextMenuListener句柄结果

Android EditText setOnCreateContextMenuListener句柄结果,android,Android,我已将setOnCreateContextMenuListener设置为edittextonCreateContextMenu方法称为用户长按edittext。然后,它会打开带有“完成”和“复制”选项的上下文菜单 但我的问题是,当用户选择“完成”选项或“复制”选项时,我该如何处理 当用户单击“完成”按钮或“复制”按钮时,我可以获得任何事件吗。所以我可以通过剪辑管理器获取选定的文本 edit.setOnCreateContextMenuListener(new OnCreateContextMen

我已将
setOnCreateContextMenuListener
设置为edittext
onCreateContextMenu
方法称为用户长按edittext。然后,它会打开带有“完成”和“复制”选项的上下文菜单

但我的问题是,当用户选择“完成”选项或“复制”选项时,我该如何处理

当用户单击“完成”按钮或“复制”按钮时,我可以获得任何事件吗。所以我可以通过剪辑管理器获取选定的文本

edit.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

        @Override
        public void onCreateContextMenu(ContextMenu menu, View v,
                ContextMenuInfo menuInfo) {
            Log.i("TAG", "onCreateContextMenu");//it is printing while context menu is created.

        }
    });

谢谢。

您可以获得双按钮事件,如以下示例所示

 public class MainActivity extends Activity 
 {
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
                ListView lv = (ListView)findViewById(R.id.lv1);
                registerForContextMenu(lv);
        }
 }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
    {
        super.onCreateContextMenu(menu, v, menuInfo);

        if (v.getId() == R.id.lv1) 
        {
            menu.setHeaderTitle("Select Action");
            menu.add(0, v.getId(), 0, "Edit");
            menu.add(0, v.getId(), 0, "Delete");
        }
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) 
    {
        AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();

        if(item.getTitle() == "Edit")
        {
            // do something
        }
        if(item.getTitle() == "Delete")
        {
            // do something
        }
        return true;
    }

希望它能帮助您。

您必须覆盖编辑文本的onlong click并设置一个CAB。例如:

    private ActionMode.Callback action = new ActionMode.Callback() {

        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {
            // TODO Auto-generated method stub

        }

        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            // TODO Auto-generated method stub
            return true;
        }

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            if (item.getItemId() == android.R.id.copy){
                ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
                Log.i("CAB",String.valueOf(clipboard.getPrimaryClip().getItemAt(0).getText()));
            }
            return true;
        }
    };
    private EditText edtText;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); 


        edtText = (EditText) findViewById(R.id.edtText1);

        registerForContextMenu(edtText);
        edtText.setOnLongClickListener(new OnLongClickListener() {

            @Override
            public boolean onLongClick(View v) {
                ((EditText)v).setTextIsSelectable(true);                
                ((EditText)v).setCustomSelectionActionModeCallback(action);
                return false;
            }
        });  

    }       

onContextItemSelected
是您应该使用的事件。但是它没有
视图
参数来访问所选项目。下面是访问所选
视图的技巧

public class MainActivity extends Activity 
{
    protected View selectedView;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
                ListView lv = (ListView)findViewById(R.id.lv1);
                registerForContextMenu(lv);
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
    {
        this.selectedView = v;
        super.onCreateContextMenu(menu, v, menuInfo);            
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) 
    {
        switch(item.getId())
        {
            case R.id.Context_Edit:
                // access to view with this.selectedView
                break;

            case R.id.Context_Delete:
                // access to view with this.selectedView
                break;
            default:
                return super.onContextItemSelected(item);
        }
        return true;
    }
}

谢谢4重播,我有这样的打印日志---@重写公共布尔值onContextItemSelected(MenuItem项){Log.i(“TAG”,“onContextItemSelected”);---但它不打印。这意味着方法未调用。但您尚未获取按钮事件,请仔细查看我的答案。兄弟。@nilyes。但如果onContextItemSelected(MenuItem项)调用后,它将转到下一行。因此,我在mehod调用时已在第一行打印日志。此选项菜单无法记录任何内容,因为您尚未采取任何操作事件。@nillet-us