Android 使用单选按钮更改“;“模式”;同时能够使用TextWatcher
我正在开发一个简单的应用程序,可以在句子中翻转单词。我需要它有三种方式来实现这一点,这取决于用户通过启用单选按钮选择的模式。因此,我使用Android 使用单选按钮更改“;“模式”;同时能够使用TextWatcher,android,radio-button,android-textwatcher,Android,Radio Button,Android Textwatcher,我正在开发一个简单的应用程序,可以在句子中翻转单词。我需要它有三种方式来实现这一点,这取决于用户通过启用单选按钮选择的模式。因此,我使用RadioGroup作为父布局,以便一次启用一个RadioButton。 我可以通过切换他们的ID来实现这一点 modeGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onChecke
RadioGroup
作为父布局,以便一次启用一个RadioButton
。
我可以通过切换他们的ID来实现这一点
modeGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
case R.id.rb_mode_1:
String[] nowTyping = input.getText().toString().split(" ");
ArrayList<String> wordArray = new ArrayList<>();
for (String word : nowTyping){
wordArray.add(0, word);
}
String invertedSentence = TextUtils.join(" ", wordArray);
output.setText(invertedSentence);
break;
//And so...
}
}
});
我的问题是,当我同时使用TextWatcher时,如何实现我的需求?实际上,我可以改变模式而不必实时输出文本,也可以让文本输出而不必改变模式。我使用
getCheckedRadioButtonId()
方法解决了这个问题,方法是RadioGroup
直接在onTextChanged()中TextWatcher
方法,如下所示:
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (modeGroup.getCheckedRadioButtonId() == R.id.rb_mode_1) {
String[] nowTyping = input.getText().toString().split(" ");
ArrayList<String> wordArray = new ArrayList<>();
for (String word : nowTyping) {
wordArray.add(0, word);
}
String invertedSentence = TextUtils.join(" ", wordArray);
output.setText(invertedSentence);
}
else if (modeGroup.getCheckedRadioButtonId() == R.id.rb_mode_2){
//Do mode 2 stuffs...
}
....
}
@覆盖
public void onTextChanged(字符序列、int start、int before、int count){
if(modeGroup.getCheckedRadioButtonId()==R.id.rb_mode_1){
字符串[]nowTyping=input.getText().toString().split(“”);
ArrayList wordArray=新的ArrayList();
for(字符串字:nowTyping){
添加(0,word);
}
字符串InvertedEntence=TextUtils.join(“,wordArray);
输出.setText(逆变器输入);
}
else if(modeGroup.getCheckedRadioButtonId()==R.id.rb_mode_2){
//做模式2的事情。。。
}
....
}
有时候,我们只是在要求别人为我们做之前挖掘得不够
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (modeGroup.getCheckedRadioButtonId() == R.id.rb_mode_1) {
String[] nowTyping = input.getText().toString().split(" ");
ArrayList<String> wordArray = new ArrayList<>();
for (String word : nowTyping) {
wordArray.add(0, word);
}
String invertedSentence = TextUtils.join(" ", wordArray);
output.setText(invertedSentence);
}
else if (modeGroup.getCheckedRadioButtonId() == R.id.rb_mode_2){
//Do mode 2 stuffs...
}
....
}