我正在开发一个简单的应用程序,可以将句子中的单词翻转。我需要它具有三种方法,具体取决于用户通过启用RadioButtons选择的模式。因此,我使用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
来将用户键入的内容直接显示在textView中。现在,我无法更改模式,因为翻转单词的代码实际上是由该类实现的onTextChanged()
方法调用的。
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
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);
}
我的问题是,同时使用TextWatcher时如何满足我的需要?实际上,我可以更改模式而不能实时输出文本,也可以输出文本而不能更改模式。
答案 0 :(得分:0)
我使用getCheckedRadioButtonId()
的{{1}}方法直接在RadioGroup
的{{1}}方法内部解决了这个问题,如下所示:
onTextChanged()
有时候,我们只是在要求他人为我们做事之前没有足够的挖掘能力。