テキストをクリップボードにコピーすると、onPrimaryClipChanged メソッドが 2 回呼び出されます。理由はありますか?
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
final ClipboardManager cliboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
cliboardManager
.addPrimaryClipChangedListener(new OnPrimaryClipChangedListener() {
@Override
public void onPrimaryClipChanged() {
ClipData clipData = cliboardManager.getPrimaryClip();
System.out
.println("********** clip changed, clipData: "
+ clipData.getItemAt(0));
}
});
return true;
}
テスト ケース: BBC Web サイトから「continue」というテキストをコピーすると、次の出力が得られます。
継続する
継続する
しかし、プログラムをデバッグすると、clipData オブジェクトに値があることがわかります。
ClipData { text/plain {T:continue } }
初めて onPrimaryClipChanged() が呼び出され、
ClipData { text/plain "BBC - ホームページ" {T:continue } }
次に onPrimaryClipChanged() が呼び出されたとき。
つまり、基本的に、最初の ClipDescription は { text/plain } で、2 回目は ClipDescription { text/plain "BBC - Homepage" } (つまり、Web ページのタイトルを含む) です。