Java “我想要可见”按钮已将其从文本视图中删除
“我想要可见”按钮已将其从文本视图中删除 我在文本视图中进行键盘输入,我有4个按钮b1、b2、b3和backspace。 当我点击b1时,在文本视图中键入“A”,b1不可见 然后,当我单击backspace按钮时,它的remove last char(删除最后一个字符但不显示)按钮已单击 我的项目 爪哇 您可以尝试以下方法: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()
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);
}
}
}