Java “我想要可见”按钮已将其从文本视图中删除

Java “我想要可见”按钮已将其从文本视图中删除,java,android,stack,Java,Android,Stack,“我想要可见”按钮已将其从文本视图中删除 我在文本视图中进行键盘输入,我有4个按钮b1、b2、b3和backspace。 当我点击b1时,在文本视图中键入“A”,b1不可见 然后,当我单击backspace按钮时,它的remove last char(删除最后一个字符但不显示)按钮已单击 我的项目 爪哇 您可以尝试以下方法: case R.id.backspace: //try like this if(string.substring(string.length()

“我想要可见”按钮已将其从文本视图中删除

我在文本视图中进行键盘输入,我有4个按钮b1、b2、b3和backspace。 当我点击b1时,在文本视图中键入“A”,b1不可见

然后,当我单击backspace按钮时,它的remove last char(删除最后一个字符但不显示)按钮已单击

我的项目

爪哇

您可以尝试以下方法:

    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));

您可以创建一个按下按钮的
堆栈
,以便了解按钮按下的顺序:

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);
        }
    }                
}
公共类MainActivity扩展。。。工具{
Stack pressedButtons=新堆栈();
...
@凌驾
公共void onClick(视图){
//如果它是一个数字,而不是一个退格键-记住我们按下了它
如果(view.getId()!=R.id.backspace){
按按钮。按(视图);
setText(txt.getText().toString()+((按钮)视图).getText());
view.setVisibility(view.INVISIBLE);
}
else{//退格键
字符串text=txt.getText().toString();
if(text.isEmpty())
return;//执行此操作以防止崩溃
txt.setText(text.substring(0,text.length()-1));
//使按钮再次可见
查看lastPressedButton=pressedButtons.pop();
最后一次按下按钮。设置可见性(View.VISIBLE);
}
}                
}

view.getText()时出错错误:单击backspace并清空我的应用程序时,找不到符号方法getText()close@frhood是的,这是因为无法删除空字符串的最后一个字符;)再次编辑我的答案
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);
        }
    }                
}