make方法如何只运行一次

时间:2016-08-06 06:12:17

标签: java android android-studio methods

我有一个启动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);
}

1 个答案:

答案 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;
}