簡體   English   中英

Android - 如何點擊按鈕我怎么記得?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM