我有一个启动copy
方法的按钮,然后转到后台和copiedText
方法,该方法将复制的文本粘贴到列表适配器中。
当我打开我的应用程序并按下copy
按钮,然后再次复制相同的文本。按copy
按钮的次数增加了。
如何阻止它多次进入。我需要该方法只运行一次。
private void copy() {
String name = EditTxt.getText().toString();
copiedText();
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
}
public void copiedText() {
//copy text from clipboard to adapter
ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
ClipboardManager.OnPrimaryClipChangedListener mPrimaryChangeListener =
new ClipboardManager.OnPrimaryClipChangedListener() {
public void onPrimaryClipChanged() {
ClipboardManager clipBoard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
clipText = clipBoard.getPrimaryClip().getItemAt(0).getText().toString();
adapter.add(clipText);
//refresh
adapter.notifyDataSetChanged();
Toast.makeText(getApplicationContext(), "Text is copied to MultiCopy flot", Toast.LENGTH_SHORT).show();
}
};
clipboardManager.addPrimaryClipChangedListener(mPrimaryChangeListener);
}
答案 0 :(得分:1)
您可以使用布尔变量来跟踪是否允许复制。 复制前检查是否为真。 在开始复制时将其设为false。 然后一旦完成工作再次成功。
检查此代码:
boolean isCopyAllowed=true;
private void copy() {
if(isCopyAllowed){
isCopyAllowed=false;
String name = EditTxt.getText().toString();
copiedText();
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
}
}
public void copiedText() {
//copy text from clipboard to adapter
ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
ClipboardManager.OnPrimaryClipChangedListener mPrimaryChangeListener =
new ClipboardManager.OnPrimaryClipChangedListener() {
public void onPrimaryClipChanged() {
ClipboardManager clipBoard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
clipText = clipBoard.getPrimaryClip().getItemAt(0).getText().toString();
adapter.add(clipText);
//refresh
adapter.notifyDataSetChanged();
Toast.makeText(getApplicationContext(), "Text is copied to MultiCopy flot", Toast.LENGTH_SHORT).show();
}
};
clipboardManager.addPrimaryClipChangedListener(mPrimaryChangeListener);
isCopyAllowed=true;
}