Android 单击按钮可工作一次
我试图让一个按钮只工作一次,所以我做了这个解决方案,但有时它会持续工作两次或更多的点击,如何解决这个问题Android 单击按钮可工作一次,android,Android,我试图让一个按钮只工作一次,所以我做了这个解决方案,但有时它会持续工作两次或更多的点击,如何解决这个问题 Button bton = (Button)findViewById(R.id.ajoutTroisDemi); bton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v)
Button bton = (Button)findViewById(R.id.ajoutTroisDemi);
bton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
v.setClickable(false);
v.setEnabled(false);
ajouter(v);
Intent l = new Intent(ActivityTroisQuart.this,ActivityTroisDemi.class);
startActivity(l);
Toast.makeText(getApplicationContext(), "Données Enregistrées", Toast.LENGTH_SHORT).show();
}
public void ajouter(View v) {
db.open();
EditText rm_26 = (EditText)findViewById(R.id.rm_26);
String rm_26_1ts = rm_26.getText().toString();
SharedPreferences prefs4 = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
prefs4.edit().putString(Ordr, rm_26_1ts).commit();
int nb = prefs4.getInt(B, 0);
long id = prefs4.getLong(ID, 0);
db.insertMMbreMenage1(id,rm_26_1ts);
int test = nb-1;
Editor editor = prefs4.edit();
editor.putInt("nb", test);
editor.commit();
db.close();
}
});
1.你可以从你的代码中删除这些行,因为它们,你的按钮变得不可点击
v.setClickable(false);
v.setEnabled(false);
二,。如果你真的需要这种方法。您可以在代码完成后尝试启用它们。像这样
public void onClick(View v) {
v.setClickable(false);
v.setEnabled(false);
ajouter(v);
Intent l = new Intent(ActivityTroisQuart.this,ActivityTroisDemi.class);
startActivity(l);
Toast.makeText(getApplicationContext(), "Données Enregistrées", Toast.LENGTH_SHORT).show();
v.setClickable(true);
v.setEnabled(true);
}
1.你可以从你的代码中删除这些行,因为它们,你的按钮变得不可点击
v.setClickable(false);
v.setEnabled(false);
二,。如果你真的需要这种方法。您可以在代码完成后尝试启用它们。像这样
public void onClick(View v) {
v.setClickable(false);
v.setEnabled(false);
ajouter(v);
Intent l = new Intent(ActivityTroisQuart.this,ActivityTroisDemi.class);
startActivity(l);
Toast.makeText(getApplicationContext(), "Données Enregistrées", Toast.LENGTH_SHORT).show();
v.setClickable(true);
v.setEnabled(true);
}
试着直接做
final Button bton = (Button)findViewById(R.id.ajoutTroisDemi);
bton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
bton.setEnabled(false);
ajouter(v);
Intent l = new Intent(ActivityTroisQuart.this,ActivityTroisDemi.class);
startActivity(l);
Toast.makeText(getApplicationContext(), "Données Enregistrées", Toast.LENGTH_SHORT).show();
}
}
试着直接做
final Button bton = (Button)findViewById(R.id.ajoutTroisDemi);
bton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
bton.setEnabled(false);
ajouter(v);
Intent l = new Intent(ActivityTroisQuart.this,ActivityTroisDemi.class);
startActivity(l);
Toast.makeText(getApplicationContext(), "Données Enregistrées", Toast.LENGTH_SHORT).show();
}
}
替换您的代码
bton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
v.setClickable(false);
v.setEnabled(false);
ajouter(v);
Intent l = new Intent(ActivityTroisQuart.this,ActivityTroisDemi.class);
startActivity(l);
Toast.makeText(getApplicationContext(), "Données Enregistrées", Toast.LENGTH_SHORT).show();
}
借
您的问题将得到解决。替换您的代码
bton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
v.setClickable(false);
v.setEnabled(false);
ajouter(v);
Intent l = new Intent(ActivityTroisQuart.this,ActivityTroisDemi.class);
startActivity(l);
Toast.makeText(getApplicationContext(), "Données Enregistrées", Toast.LENGTH_SHORT).show();
}
借
您的问题将得到解决。我建议您使用条件语句测试按钮在执行按钮所需的任务后是否启用not。我建议您使用条件语句测试按钮在执行按钮所需的任务后是否启用not。为什么v、 可点击设置(假);v、 setEnabled(假);是否无效???您能否指定情况,当您的按钮工作两次时?你的代码看起来不错。你也可以隐藏该按钮,或者你可以设置一个布尔值Clicked=false,当你单击它一次时,将其设置为true,并且在onclick中有一个if(单击){…@user3110424:是的,代码很好,但是当我快速点击按钮时,它会工作两次,有时会这样!@Rudi:谢谢你的解决方案,也许我会这样处理为什么v.setClickable(false);v.setEnabled(false);无效???您能否指定该情况,当您的按钮工作两次时?您的代码似乎很好。您也可以隐藏该按钮,或者您可以将布尔值Clicked设置为false,当您单击一次时,将其设置为true,并且在onclick内有一个if(单击){…@user3110424:是的,代码很好,但当我快速点击按钮时,它会工作两次,有时会这样!@Rudi:谢谢你的解决方案,可能是我将如何处理感谢你的回应:)我的问题是,我希望按钮只工作一次,但即使我使用了方法v.setClickable(false);v.setEnabled(false);我碰巧发现按钮工作了不止一次,这是一个需要大量响应的问题:)我的问题是,我希望按钮只工作一次,但即使我使用了方法v.setClickable(false);v.setEnabled(false)如果我将v.setEnabled(false)更改为bton.setEnabled(false),它将解决问题,请您解释一下,谢谢!它不起作用,如果您快速单击,按钮将执行两次!因此如果我将v.setEnabled(false)更改为bton.setEnabled(false)这将解决问题,你能解释更多吗,谢谢!它不起作用,如果你快速单击按钮,按钮将执行两次!谢谢,你能解释区别吗,我已经有了这个答案,但我想知道为什么这一个有效,而另一个无效!因为你试图在按钮视图中执行此操作,所以它由内部按钮控制操作,但按钮bton本身是一个按钮对象,它本身是一个布局小部件。因此,bton不按按钮视图vit发生故障,如果您快速单击按钮,按钮将执行两次!意味着它不会禁用按钮?谢谢,您能解释区别吗,我已经有了这个答案,但我想知道为什么这一个有效,以及其他不是!因为您试图在按钮视图内执行此操作,所以它由内部按钮操作控制,但按钮bton本身就是一个按钮对象,它本身就是一个布局小部件。因此,bton非按钮视图vit不起作用,如果您快速单击按钮,按钮将执行两次!意味着它没有禁用按钮?