0

textView があり、そのテキストをコピー可能にしてから、onCreateContextMenu をオーバーライドします。

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    //user has long pressed your TextView
    menu.add(0, v.getId(), 0, "Copy");
    TextView yourTextView = (TextView) v;
    ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
    clipboard.setText(yourTextView.getText());

}

メニューがクリックされた後に「クリップボードにコピーされた」トーストを表示したいのですが、どうすればよいですか? 2 つ目の質問は、ClipManager が非推奨になった理由です。代わりに何を使う?

4

1 に答える 1

1
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    //user has long pressed your TextView
    menu.add(0, v.getId(), 0, "Copy");
    TextView yourTextView = (TextView) v;
    ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);

    clipboard.setText(yourTextView.getText());
}

    @Override
public boolean onContextItemSelected(MenuItem item) {

    super.onContextItemSelected(item);

    if (item.getTitle() == "Copy") {
        Toast.makeText(getApplicationContext(), "copied to clipboard", Toast.LENGTH_LONG).show();

    }
    return true;
}

 } 

SDK>=15 の場合、これは機能します

   ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
     ClipData clip = ClipData.newPlainText("label for text", "text to copy");
     clipboard.setPrimaryClip(clip);
于 2015-09-26T15:25:15.170 に答える