1

誰でも教えてもらえますか?2 つのアクションに同じボタンを使用するにはどうすればよいですか? 私のアクティビティでいくつかの値を計算する 1 つのボタンを使用し、同じボタンをもう一度押したときに計算した後、すべてのフィールドをリセットするようにします。このアプリケーション http://www.craziness.com/games/play-love-tester/のように、ボタンを押して愛をテストすると、同じボタンをもう一度押すと、すべてのフィールドがリセットされます。上記の問題のアクティビティで何を使用すればよいですか?

4

3 に答える 3

4

プログラムの状態を示すグローバル変数を作成し、必要に応じてこの値を変更できます。のOnClickListenerで、この変数をチェックし、関連付けられた値に対して必要なことをButton行うステートメントを作成します。if

例:

public class MainActivity extends Activity {
    private int state = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (state == 0) {
                    // State 1
                }
                else if (state == 1) {
                    // State 2 
                }
                else {
                    // Default state
                }
            }
        });

        // Rest of your code including state changing part
    }
}
于 2012-07-28T17:14:40.017 に答える
1
  • ボタンのテキストを変更することでそれを行うことができます。

誰かにテキストの変更が表示されることを望まない場合。テスト(例「クリック」および他の状態「クリック」(最後に1つの空白)または別の解決策。

....

Button bt = (Button) findViewById(R.id.button);
bt.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {
//  todo: check for expected instance (Button) 
Button btc = (Button)v;
String bText = btc.getText().toString();

if (bText == "open") {
     btc.setText("close");
     }
     else if (bText == "close") {
     btc.setText("open"); 
     }
}

[...]
于 2012-07-28T19:05:48.697 に答える
0

これは、トグル ボタンを使用して行うことができます。

xml ファイルにトグル ボタンを追加します。

<ToggleButton 
    android:id="@+id/tbtn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text=""
    android:textOff="Reset"
    android:textOn="Calculation"
    android:background="@drawable/icon"/>   

Java ファイル

public class Reviews extends Activity implements OnClickListener {

private ToggleButton tbtn;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    tbtn = (ToggleButton) findViewById(R.id.tbtn);
    tbtn.setOnClickListener(this);

    public void onClick(View view) {

        if (tbtn.isChecked()) {

            //calculate the result
        } 
        else {

             //Reset your global calculation variable;
        }

        }
    }
}
于 2012-07-28T23:14:00.450 に答える