1

我有一个名为“保存”的按钮。当我单击它时,它将调用以下编码:

public void SaveText(View view){     

            try {
              OutputStreamWriter out = new OutputStreamWriter(openFileOutput ("myfilename.txt",MODE_APPEND));


                double latitude = gps.getLatitude();
                double longitude = gps.getLongitude();

                String mydate = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());
                String latt = Double.toString(latitude); 
                String lonn = Double.toString(longitude); 


              String text =(latt+" "+lonn+" "+mydate);
              out.write(text);
              out.write('\n');             

              out.close();

              Toast.makeText(this,"Text Saved !",Toast.LENGTH_LONG).show();

              }

                 catch (java.io.IOException e) {
                //do something if an IOException occurs.
                    Toast.makeText(this,"Sorry Text could't be added",Toast.LENGTH_LONG).show
    ();
                                           }

当用户已经单击它 10 次时,我想将“保存”按钮设置为不可单击,这样它就不会将超过 10 个文本保存到文本文件中。

编辑

到目前为止我所尝试的:

做{

        try {
          OutputStreamWriter out = new OutputStreamWriter(openFileOutput ("myfilename.txt",MODE_APPEND));

            double latitude = gps.getLatitude();
            double longitude = gps.getLongitude();

            String mydate = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());
            String latt = Double.toString(latitude); 
            String lonn = Double.toString(longitude); 


          String text =(latt+" "+lonn+" "+mydate);
          out.write(text);
          out.write('\n');             

          out.close();

          Toast.makeText(this,"Text Saved !",Toast.LENGTH_LONG).show();
          count++;
          }

             catch (java.io.IOException e) {            
                Toast.makeText(this,"Sorry Text could't be added",Toast.LENGTH_LONG).show
();
                                       }}

    while(count<9);
    if (count>9){Button btn=(Button)findViewById(R.id.Save); btn.setEnabled(false);}


 }

结果是当单击“保存”按钮一次时,它会禁用我的“保存”按钮,而无需等待它被单击 10 次。

新代码

 public void SaveText(View view){    
     if (this.counter <= 10) {

        try {
          OutputStreamWriter out = new OutputStreamWriter(openFileOutput ("xy.txt",MODE_APPEND));


            double latitude = gps.getLatitude();
            double longitude = gps.getLongitude();

            String mydate = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());
            String latt = Double.toString(latitude); 
            String lonn = Double.toString(longitude); 


          String text =(latt+" "+lonn+" "+mydate);
          out.write(text);
          out.write('\n');             

          out.close();

          Toast.makeText(this,"Text Saved !",Toast.LENGTH_LONG).show();

          }

             catch (java.io.IOException e) {

                Toast.makeText(this,"Sorry Text could't be added",Toast.LENGTH_LONG).show
();
                                    }
    this.counter++;     }



 }}

我尝试过的所有方法,但是当我第二次单击“保存”按钮时,它什么也不做。

解决方案 :

非常感谢。大家真的帮我解决了这个问题。

 public void SaveText(View view){    

          if (this.counter <= 10) {
            //to-do coding
                                            }
              this.counter++;

    }

          else{Button btn=(Button)findViewById(R.id.Save); btn.setEnabled(false);}  

     }}
4

4 回答 4

1

您需要在课堂上保留按钮点击计数器。由于您没有指定您的班级名称,因此我将其命名为YourClass.

public class YourClass ... {

     private int buttCounter = 0;
     ...
}

然后,您需要在单击按钮时更新并检查此计数器。

public void SaveText(View view){

    if (this.buttCounter <= 10) {
        // Your old method body goes here
        this.buttCounter++;
    }
}

这不会停用按钮,但在按下按钮时不会执行任何操作。如果要禁用该按钮,可以使用Button.setClickable(false)Button.setEnabled(false)甚至使用 隐藏它Button.setVisibility(View.INVISIBLE)

于 2013-07-15T14:17:17.907 回答
0

将此添加到点击侦听器的顶部。

    private int numClicks = 0;
    public void SaveText(View view){
            numClicks++;
            if(numClicks == 10) {
                    view.setEnabled(false);
            }
于 2013-07-15T14:16:33.093 回答
0

创建一个您将在 onclick 结束时递增的变量。在 onclick 中,在递增之前,做一个条件来检查你的变量是否等于 9。如果等于 9,则禁用按钮。

编辑:

int counter = 0;
public void SaveText()
{
   doSomething();

   if(counter == 9)
   {
      myButton.setEnabled(false);
   }
   counter++;
}
于 2013-07-15T14:17:32.553 回答
0

设置一个实例变量来保存点击,并有一个 onclick 监听器来增加该变量。然后,一旦达到该数量,请更改按钮属性。

如果您需要进一步的帮助,我们需要查看整个班级以告诉您在哪里。

于 2013-07-15T14:14:45.137 回答