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...
    }
     ....
}