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