gpt4 book ai didi

Android使用TextWatcher替换文字

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:51:27 27 4
gpt4 key购买 nike

我有一个editText,你可以在里面写一些东西然后当你点击下一步时......你写的文本会被写入另一个editText ..它工作完美..但是我想用 textWatcher 来替换一些字母..

示例:如何使 S 成为 $或 O 为 @

更新:

    final EditText First = (EditText)findViewById(R.id.etFirst);
String strFirst = First.getText().toString();
final TextView done = (TextView)findViewById(R.id.tvName);
String strDone = done.getText().toString();
Button Trans = (Button) findViewById(R.id.bTrans);

Trans.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {
//First EditText
if (First.getText().toString().equals("John")) {
done.setText("JOHN");
} else {
if (First.getText().toString().equals("Ahmed")) {
done.setText("AHMED");
} else {
done.setText(First.getText());
}
}
};
});

First.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
}

public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}

public void afterTextChanged(Editable s) {
done.setText(First.getText().toString().replaceAll("S", "$"));
}
});

我的代码会将你在 EditText 中写的内容输入到下面的 Large TextView 中。当我按下按钮 Trans 时,它会设置你写的文本,但我想将一些字母示例 S 替换为$ .. 当我键入 S 时什么也没有发生 .. 只是 S 它不会变成 $ ..

我做错了什么?

最佳答案

将 Textwatcher 分配给您的 editText 然后执行类似的操作

editText.setText(editText.getText().toString().replaceAll("S", "$"));

这是应用了代码的 textWatcher

    final EditText First = (EditText)findViewById(R.id.etFirst);
String strFirst = First.getText().toString();
final TextView done = (TextView)findViewById(R.id.tvName);
String strDone = done.getText().toString();
Button Trans = (Button) findViewById(R.id.bTrans);

Trans.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {
//First EditText
if (First.getText().toString().equals("John")) {
done.setText("JOHN");
} else {
if (First.getText().toString().equals("Ahmed")) {
done.setText("AHMED");
} else {
done.setText(First.getText());
}
}
};
});

First.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
}

public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}

public void afterTextChanged(Editable s) {
String text = First.getText().toString();
text = text.replace('s', 'd'); // Any of the diffrent replace methods should work.
text = text.replace('S', '$'); // This uses the char replace method. Note, the ' quotations
text = text.replace('O', '@');
text = text.replace('o', '@');
done.setText(text);
}
});

错误可能在于您再次获取旧字符串,并在其上应用 text.replace。而不是修改后的字符串。我本以为它会得到新字符串,但 setText 似乎没有立即触发。

因此,如果您将字符串放入变量中,然后应用所有更改。然后将其放回您的文本框,它会正常工作。 (我已经在上面粘贴了测试和工作代码)

关于Android使用TextWatcher替换文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12081924/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com