1

「ok_button」を押してこのダイアログボックスを閉じた後、テキストビューのテキストを変更しようとしています。しかし、私はそれをループでやりたかったのです。「alleroclosed」をブール値として設定し、false として初期化しました。「ok_button」を押した後、ループが開始されないか、ブール変数「alleroclosed」が使用されません

{ 
     Button ok_button = (Button) dialog.findViewById(R.id.Ok_button);
     ok_button.setOnClickListener(
         new OnClickListener() 
         {
             @Override
             public void onClick(View v) 
             {
                 alleroclosed=true;
                 dialog.dismiss();
             }
         });

     if(alleroclosed) 
     {
         alleroclosed=false;
         alleroSTATUS.setText("it works");
     }
}

======== 文字列を「動作します」に変更しません

何らかの形で私を助けることができれば、本当に感謝しています。私はこれで真の初心者です。ありがとう!

4

3 に答える 3

0

ボタンのクリック時に実行したいタスクは、onClick() メソッドで記述する必要があります...上記のコードでは、ボタンをクリックしたときにダイアログが閉じた後に呼び出す必要があります...したがって、単に onclick() を次のようにします下

public void onClick(View v) {
dialog.dismiss();
if (somecondition) {
  // task you want to do...
}
}

次のリンクでは、onClick() の使用方法について説明して います Android でクリックされているボタンを処理する方法は? それがうまくいくことを願っています...

于 2013-03-15T23:17:46.540 に答える
0

[OK] ボタンがクリックされた場合にのみ、ブール値が true に設定されます。ブロックは、ifリスナーを作成して登録した直後に実行されます。

onClick()[ OK] ボタンがクリックされたときにこのコードを実行する場合は、if vlock の内容をリスナーのメソッドに含める必要があります。

于 2013-03-15T22:37:52.650 に答える
0

問題はあなたが電話していることだと思います

if (alleroclosed) {
  alleroclosed=false;
  alleroSTATUS.setText("it works");
}

メソッドの外にあるonClick()ため、適用されることはありません。

コードのブロックは onCreate() メソッドに直接配置され、このメソッドはクリック イベントがキャッチされたときに呼び出されないため、一度だけ適用されます - onCreate() が alleroclosed = false で呼び出されたとき。

onClick()したがって、メソッド内に配置すると機能します。

...
public void onClick(View v) {
   alleroclosed = true;
   dialog.dismiss();
   if (alleroclosed) {
      alleroclosed=false;
      alleroSTATUS.setText("it works");
   }
...

}

于 2013-03-15T22:38:13.490 に答える