在我的应用程序中,有一个按钮可将应用程序连接到邮件应用程序以发送电子邮件。我点击一次后试图禁用按钮,但我无法理解我应该在哪里再次启用该按钮,这会导致没有问题。这是我的代码:
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:"));
}
});
答案 0 :(得分:1)
您可以在活动的方法onResume
上启用该按钮。或者您可以创建一个在n秒后启用按钮的线程。但是你必须做出这个商业逻辑决定。
答案 1 :(得分:0)
将tvAboutEmail.setEnable(false)
放入您的onclick中,这将禁用侦听器。
您可以在一段时间后使用处理程序
答案 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秒启用您的按钮。