在能够使用TextWatcher的同时使用RadioButtons更改“模式”

时间:2018-08-19 13:17:09

标签: android radio-button android-textwatcher

我正在开发一个简单的应用程序,可以将句子中的单词翻转。我需要它具有三种方法,具体取决于用户通过启用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时如何满足我的需要?实际上,我可以更改模式而不能实时输出文本,也可以输出文本而不能更改模式。

1 个答案:

答案 0 :(得分:0)

我使用getCheckedRadioButtonId()的{​​{1}}方法直接在RadioGroup的{​​{1}}方法内部解决了这个问题,如下所示:

onTextChanged()

有时候,我们只是在要求他人为我们做事之前没有足够的挖掘能力。