2011-12-23 169 views
4

我编写了一个代码,将计算器中的答案复制到剪贴板,然后关闭计算器并打开另一个窗口。答案应该粘贴在这里使用代码:从Android中的剪贴板粘贴

textOut2= (TextView) findViewById(R.id.etInput1); 
    final ClipboardManager clipBoard= (ClipboardManager)getSystemService(CLIPBOARD_SERVICE); 
    textOut2.setText(clipBoard.getText()); 

但它从来没有工作。有可能是一个错误?附:我知道哪些文本被复制,因为我可以使用长按粘贴,但我想自动执行此操作。是否可以为复制的文本提供特定的名称?因为这将使其更易于粘贴的话,因为我有很多不同的TextView的

回答

10

公众的CharSequence的getText() 自:API级别11 这种方法已经过时了。 改为使用getPrimaryClip()。这将检索主剪辑并尝试将其强制转换为字符串。

String textToPaste = null; 

ClipboardManager clipboard = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE); 

if (clipboard.hasPrimaryClip()) { 
    ClipData clip = clipboard.getPrimaryClip(); 

    // if you need text data only, use: 
    if (clip.getDescription().hasMimeType(MIMETYPE_TEXT_PLAIN)) 
     // WARNING: The item could cantain URI that points to the text data. 
     // In this case the getText() returns null and this code fails! 
     textToPaste = clip.getItemAt(0).getText().toString(); 

    // or you may coerce the data to the text representation: 
    textToPaste = clip.getItemAt(0).coerceToText(this).toString(); 
} 

if (!TextUtils.isEmpty(textToPaste)) 
    ((TextView)findViewById(R.id.etInput1)).setText(textToPaste); 

你被允许通过ClipData.addItem()文本添加额外的ClipData.Item项目,但没有办法辨别它们。

2

试试这个

textOut2= (TextView) findViewById(R.id.etInput1); 
final ClipboardManager clipBoard= (ClipboardManager)getSystemService(CLIPBOARD_SERVICE); 
String temp = new String; 
temp = clipBoard.getText().toString(); 
textOut2.setText(temp);