1

谁能告诉我?我怎样才能对两个动作使用相同的按钮?就像 em 在我的活动中使用一个按钮来计算一些值,并且在计算出当我再次按下相同的按钮然后重置所有字段之后。就像在这个应用程序 http://www.crazness.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 回答