点击按钮工作一次

时间:2014-01-08 10:50:30

标签: android

我试图让按钮只工作一次,所以我做了这个解决方案,但有时它会继续工作两次或更多次点击,如何解决?

              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();                     
            } 
 });

4 个答案:

答案 0 :(得分:2)

尝试直接

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();
    }
}

答案 1 :(得分:1)

替换您的代码

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) {
          bton.setEnabled(false);
            Intent l = new Intent(ActivityTroisQuart.this,ActivityTroisDemi.class);
            startActivity(l);
            Toast.makeText(getApplicationContext(), "Données Enregistrées", Toast.LENGTH_SHORT).show();
         }

你的问题将得到解决。

答案 2 :(得分:1)

我建议您使用条件语句来测试Button是否在按下按钮所需的任务之后是否启用了。

答案 3 :(得分:0)

1.您可以从代码中删除这些行,因此您的按钮无法点击。

      v.setClickable(false);
      v.setEnabled(false);

2。如果你真的需要这种方法。您可以在代码完成后尝试启用它们。像这样。

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);
             }