【问题标题】:copy text from listView using onCreateContextMenu使用 onCreateContextMenu 从 listView 复制文本
【发布时间】:2013-02-03 01:45:42
【问题描述】:

我正在尝试使用 onCreateContextMenu 从列表视图中复制项目文本 OnCreateContextMenu and ListView itemsCopy text from TextView on Android 但我不知道如何将菜单中的副本点击与 listView 关联起来。

我当前的代码,打开一个带有副本的菜单,我不知道点击副本后如何获取文本

 @Override
 public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
     super.onCreateContextMenu(menu, v, menuInfo);
        menu.add(0, v.getId(), 0, "copy");

}

@Override  
public boolean onContextItemSelected(MenuItem item) {  
    if(item.getTitle()=="copy"){}  
    else {return false;}  
return true;  
}  

感谢您的帮助

【问题讨论】:

    标签: android android-contextmenu


    【解决方案1】:

    问题已解决,以下解决方案包括对 API 1-11 及以上 11 的支持

    @SuppressLint("NewApi")
    @Override  
    public boolean onContextItemSelected(MenuItem item) {  
        if(item.getTitle().equals(copy)){
            AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
            int index = info.position;
            String textTocopy =adapter.getItem(index-1).title;
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
                android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); 
                ClipData clip = ClipData.newPlainText("simple text",textTocopy);
                clipboard.setPrimaryClip(clip);}
            else{
                android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
                clipboard.setText(textTocopy);
    
            }
        }  
        else {return false;}  
        return true;  
    
    }  
    

    【讨论】:

    • if(item.getTitle()=="copy"){...} - 这是不正确的。首先,将字符串与 java 中的== 运算符进行比较可能会导致与您预期的结果不同。如果你想将一个字符串与任何文本进行比较,你应该使用<String-object>.equals("any text")(或"any text".equals(<String-object>) - 这样你不应该检查NULL)而不是==。其次,您根本不应该与标题进行比较(不同语言的结果(通常)会有所不同)。相反,您应该与商品 ID 进行比较:item.getItemId() == R.id.<ID_OF_MENU_OBJECT>
    • 另外,您为什么将Build.VERSION_MR2 版本进行比较?简单的HONEYCOMB就够了:(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    相关资源
    最近更新 更多