java - 我想要可见按钮已将其文本从 TextView 中删除

标签 java android stack

我想要可见按钮已将其文本从 TextView 中删除

我正在 TextView 中进行键盘输入,我有 4 个按钮 b1、b2、b3、退格键。 当我点击 b1 在 TextView 中输入“A”时,b1 不可见

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

my project

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

最佳答案

您可以创建一个按下按钮的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);
        }
    }                
}

关于java - 我想要可见按钮已将其文本从 TextView 中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58754406/

相关文章:

java - 如何检测输入的字符串是否有多个连续空格?

Android Assets 文件夹 : it takes always the first file by alphabetical order

android - 在 Xamarin.Android 应用程序的情况下使用的 ORMLite 等效包是什么

c++ - 堆栈输出错误

java - 有谁知道队列和堆栈实现/操作的数组列表表示的任何好例子?

java - 浏览器显示 jpeg 的原始图像数据。我应该确保响应中包含哪些 header ?

java - 在 Mongodb 中为嵌入式文档设置索引

java - 打开 .rskcdesc 的 SAS 风险文件扩展名

java - 在包 'qihoo' 中找不到属性 'android' 的资源标识符

c++ - 将堆栈复制到没有段错误的堆栈