![](/img/trans.png)
[英]How to make a button that shows the backspace (⌫) character on Android?
[英]how to make a backspace button that removes the last character of a stringbuilder inside a for loop
我正在制作一個Android應用程序,它通過藍牙接收從arduino到android的不同電壓電平,並將其轉換為字母。 我的應用程序已經可以將其轉換為字母,現在的問題是我不知道如何刪除字符串構建器中位於for循環內的最后一個字母。.我有一個名為Backspace的按鈕,並且希望它與相同的功能一起使用就像在計算機的退格鍵中一樣,按此鍵將刪除最后一個字母。.我希望有人可以幫助我,對此仍然很新。
注意:這些代碼來自主要活動; sbletter是一個附加字母的字符串緩沖區
boolean test = false;
char[] charArray = sbletter.toString().toCharArray();
char currentletter =' ';
char prevletter =' ';
StringBuilder strBuild1 = new StringBuilder();
for(int i = 0; i < charArray.length; i++) {
currentletter = charArray[i];
if(curletter != prevletter) {
strBuild1.append(charArray[i]);
if(test){
strBuild1.deleteCharAt(strBuild1.length()-1);
}
test = false;
}
prevletter = currentletter;
}
SecondActivity.textView1.setText(strBuild1.toString());
SecondActivity.backspace.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
test = true;
}
});
這可以肯定地工作:
private void Zero1ActionPerformed(java.awt.event.ActionEvent evt) {
if (OutputTextField.getText().length()>0){
StringBuffer sb = new StringBuffer(OutputTextField.getText());
sb = sb.deleteCharAt(OutputTextField.getText().length()-1);
OutputTextField.setText(sb.toString());
}
}
退格鍵的onClickListener
中的onClick
方法是事件驅動的,即,當單擊退格鍵時,將調用onClick
方法。 因此,將test
設置為true
並不重要,因為那時候for
循環已經停止執行了,因為它位於外部。
您可以直接使用sbletter
刪除其最后一個字符,如下所示:
backspace.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
sbletter = sbletter.deleteCharAt(sbletter.length - 1);
// Now the last character from sbletter is deleted.
// Use sbletter for whatever purpose you like now.
}
}
請注意,StringBuilder和StringBuffer的deleteCharAt方法分別返回StringBuilder和StringBuffer對象,它們帶有更改后的值,這就是我這樣寫的原因:
sbletter = sbletter.deleteCharAt(sbletter.length - 1); // Will work as expected.
而不僅僅是:
sbletter.deleteCharAt(sbletter.length - 1); // Won't work as expected.
希望能有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.