[英]Android - How do I remember if a button was clicked?
我正在構建一個計算器,它使用兩個textView作為輸入,一個textView作為結果框。 當我按下+, - ,x或/按鈕時,程序將切換到textView2並繼續輸入數字。 然后單擊=按鈕執行計算。
當我單擊=按鈕時,程序忘記按下+, - ,x或/按鈕,這樣它就不知道應該如何計算。
有沒有辦法我可以“記住”第一個按鈕點擊,以便我可以用它來確定要計算的內容?
Android代碼UPDATED,V2
package com.example.tristan.assn2;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView operand1, operand2,result,tv;
int operation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
operand1 = (TextView) findViewById(R.id.textView);
operand2 = (TextView) findViewById(R.id.textView2);
result= (TextView) findViewById(R.id.textView3);
tv=operand1;
}
public void sendMessage(View v) {
if (v.getId() == R.id.button18 || v.getId() == R.id.button15 || v.getId() == R.id.button17 || v.getId() == R.id.button21 || v.getId() == R.id.button18) {
tv=operand2;
}
if (v.getId() == R.id.button) {
tv.setText(tv.getText() + "1");
}
if (v.getId() == R.id.button2) {
tv.setText(tv.getText() + "2");
}
if (v.getId() == R.id.button3) {
tv.setText(tv.getText() + "3");
}
if (v.getId() == R.id.button4) {
tv.setText(tv.getText() + "4");
}
if (v.getId() == R.id.button5) {
tv.setText(tv.getText() + "5");
}
if (v.getId() == R.id.button6) {
tv.setText(tv.getText() + "6");
}
if (v.getId() == R.id.button7) {
tv.setText(tv.getText() + "7");
}
if (v.getId() == R.id.button8) {
tv.setText(tv.getText() + "8");
}
if (v.getId() == R.id.button9) {
tv.setText(tv.getText() + "9");
}
if (v.getId() == R.id.button10) {
tv.setText(tv.getText() + "0");
}
if (v.getId() == R.id.button11) {
tv.setText(tv.getText() + ".");
}
Button plus = (Button) findViewById(R.id.button17);
Button minus = (Button) findViewById(R.id.button15);
Button mult = (Button) findViewById(R.id.button18);
Button div = (Button) findViewById(R.id.button21);
//plus
if(v.getId()==R.id.button17){
operation = 1;
}
//minus
if(v.getId()==R.id.button15){
operation = 2;
}
//mult
if(v.getId()==R.id.button18){
operation = 3;
}
//div
if(v.getId()==R.id.button21){
operation = 4;
}
int op1, op2;
switch(operation){
case 1:
op1=Integer.parseInt(operand1.getText().toString());
op2=Integer.parseInt(operand2.getText().toString());
op2+=op1;
if(v.getId()==R.id.button23){
result.setText(op2+"");
tv=operand1;
}
break;
case 2:
op1=Integer.parseInt(operand1.getText().toString());
op2=Integer.parseInt(operand2.getText().toString());
op2-=op1;
if(v.getId()==R.id.button23){
result.setText(op2+"");
tv=operand1;
}
break;
case 3:
op1=Integer.parseInt(operand1.getText().toString());
op2=Integer.parseInt(operand2.getText().toString());
op2*=op1;
if(v.getId()==R.id.button23){
result.setText(op2+"");
tv=operand1;
}
break;
case 4:
op1=Integer.parseInt(operand1.getText().toString());
op2=Integer.parseInt(operand2.getText().toString());
op2/=op1;
if(v.getId()==R.id.button23){
result.setText(op2+"");
tv=operand1;
}
break;
}
}
}
如何分配操作?
//plus
if(v.getId()==R.id.button17){
operation = 1;
}
//minus
if(v.getId()==R.id.button15){
operation = 2;
}
//mult
if(v.getId()==R.id.button18){
operation = 3;
}
//div
if(v.getId()==R.id.button21){
operation = 4;
}
private String operation;
在每個操作的輸出中,你寫:對於加號:
operation = "+";
對於減號:
operation = "-";
對於div:
operation = "/";
等等...對於選中,查詢變量操作 。 切換或如果。
switch (operation) {
case "+":
//Your operation
break;
case "-":
//Your operation
break;
case "/":
//Your operation
break;
}
您應該在Activity
中的某個位置創建一個變量,用於存儲按下的按鈕(加號,減號等)的表示形式。 這可能只是一個字符串值,表示“加號”,“減號”等。然后為每個操作員按鈕實現一個OnClickListener
,適當地設置變量。 然后您可以檢查此變量以查看執行了哪些操作。
此外,您可以將它們組合到一個if
語句中,而不是根據運算符變量的值更改計算op2
的方式,而不是使用以v.getId() == R.id.button23
開頭的四個單獨的if
語句。
我會用這個堆棧。 例如,當您點擊1時,將其添加到堆棧。 當你點擊+添加到堆棧。 當你拿3時,將它添加到堆棧。 然后,您可以將每個項目從狀態中彈出,無論操作員是什么,您都可以執行該功能.....
將每個項目從堆棧中彈出時,您可以確定它們是什么。 如果#,存儲在var1中,如果+, - ,/,*,則執行其他操作....按此方式執行此操作將允許您跟蹤堆棧上的所有內容。
要注意的一件事是,如果按順序將8,3,1放在堆疊上,當你彈出它們時,它將是1,3,8。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.