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


 }

その結果、「保存」ボタンを1回クリックすると、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

クリックを保持するようにインスタンス変数を適切に設定し、その変数をインクリメントする onclick リスナーを用意します。次に、その量に達したら、ボタンのプロパティを変更します。

さらにサポートが必要な場合は、クラス全体を見て場所を示す必要があります。

于 2013-07-15T14:14:45.137 に答える
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 に答える