我希望可见按钮已将其从TextView中删除

时间:2019-11-07 17:47:45

标签: java android stack

我希望可见按钮已将其从TextView中删除文本

我正在使键盘在文本视图中键入,我有4个按钮b1,b2,b3,backspace。 当我单击b1时,在文本视图“ A”中键入且b1不可见

然后,当我单击退格按钮时,它会删除最后一个字符,但没有出现最后一个按钮已单击

  

我的项目

https://youtu.be/_pLEUevM8aA

  

java

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 implements View.OnClickListener {


        //my buttons
    Button b1,b2,b3,backspace;
        //my text view


    TextView txt;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        txt = (TextView)findViewById(R.id.txt);
        b1 = (Button)findViewById(R.id.b1);
        b2 = (Button)findViewById(R.id.b2);
        b3 = (Button)findViewById(R.id.b3);
        backspace = (Button)findViewById(R.id.backspace);


        b1.setOnClickListener(this);
        b2.setOnClickListener(this);
        b3.setOnClickListener(this);
        backspace.setOnClickListener(this);

        }

      //on clike listener    

    @Override
    public void onClick(View view) {

        switch (view.getId()){

              //b1 on click
            case R.id.b1:

                txt.setText(txt.getText().toString() + b1.getText());
                b1.setVisibility(View.INVISIBLE);

                break;

                  //b2 on click
            case R.id.b2:
                txt.setText(txt.getText().toString() + b2.getText());
                b2.setVisibility(View.INVISIBLE);

                break;

                     //b3 on click
            case R.id.b3:
                txt.setText(txt.getText().toString() + b3.getText());
                b3.setVisibility(View.INVISIBLE);

                break;

                //here is my problem last char has deleted button of that char must be get visible

                   //backspace on click
            case R.id.backspace:

                //I want visible button has removed it text from TextView
                //appear last button has clicked


               txt.setText(txt.getText().toString().substring(0,txt.getText().toString().length()-1));


                break;
        }//end switch 

    }                   //I hope get answer in this website
}
                    //thank for ALL helping

2 个答案:

答案 0 :(得分:0)

您可以尝试以下方法:

    case R.id.backspace:

    //try like this
    if(string.substring(string.length() - 1).equals(b3.getText())) 
       b3.setVisibility(View.VISIBLE);
    ...

txt.setText(txt.getText().toString().substring(0,txt.getText().toString().length()-1));

答案 1 :(得分:0)

您可以创建一个按下按钮的Stack,以便您知道按下按钮的顺序:

public class MainActivity extends ... implements ...{
    Stack<View> pressedButtons = new Stack<>();
    ...
    @Override
    public void onClick(View view) {
        // If it is a number, not a backspace key - remember that we pressed it
        if(view.getId() != R.id.backspace) {  
            pressedButtons.push(view);
            txt.setText(txt.getText().toString() + ((Button) view).getText());
            view.setVisibility(View.INVISIBLE);
        }
        else {  // backspace key
            String text = txt.getText().toString();
            if(text.isEmpty())
                return;  // do this to prevent crash
            txt.setText(text.substring(0, text.length() - 1));
            // make the button visible again
            View lastPressedButton = pressedButtons.pop();
            lastPressedButton.setVisibility(View.VISIBLE);
        }
    }                
}