Android - 启用和禁用发送电子邮件按钮

时间:2017-08-22 10:19:09

标签: android

在我的应用程序中,有一个按钮可将应用程序连接到邮件应用程序以发送电子邮件。我点击一次后试图禁用按钮,但我无法理解我应该在哪里再次启用该按钮,这会导致没有问题。这是我的代码:

 tvAboutEmail.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
                    "mailto","something@gmail.com", null));
            startActivity(Intent.createChooser(emailIntent, "Sending With:"));
        }
    });

4 个答案:

答案 0 :(得分:1)

您可以在活动的方法onResume上启用该按钮。或者您可以创建一个在n秒后启用按钮的线程。但是你必须做出这个商业逻辑决定。

答案 1 :(得分:0)

tvAboutEmail.setEnable(false)放入您的onclick中,这将禁用侦听器。 您可以在一段时间后使用处理程序

启用它,例如2或3秒

答案 2 :(得分:0)

您可以使用阻止操作的属性,但在应用程序关闭后重置,如

private boolean hasBeenSent = false;

然后执行此操作

 tvAboutEmail.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if(!hasBeenSent){
        Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
                "mailto","something@gmail.com", null));
        startActivity(Intent.createChooser(emailIntent, "Sending With:"));
        hasBeenSent = true;
        }
    }
});

或使用SharedPreferences即使在应用关闭后也能存储该值

 tvAboutEmail.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        SharedPreferences mSharedPref = getSharedPreferences(TAG,MODE_PRIVATE);
        if(!mSharedPref.getBoolean("hasBeenSent",false)){
        Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
                "mailto","something@gmail.com", null));
        startActivity(Intent.createChooser(emailIntent, "Sending With:"));
        mSharedPref.edit().putBoolean("hasBeenSent",true).commit();
        }
    }
});

答案 3 :(得分:0)

创建一个处理程序:

Runnable runnable = new Runnable() {
   @Override
   public void run(){
      tvAboutEmail.setEnabled(true);
   }
}
Handler handler = new Handler();

并在onClickListener()

中添加以下内容
tvAboutEmail.setEnabled(false);
handler.postDelayed(runnable, 2000);

这将在点击后2秒启用您的按钮。