1

我有一个Fragment. 其中有两个单选按钮。我正在尝试TextView在此片段中创建一个并根据RadioButton用户检查更改其内容。下面你可以看到我的代码。我的问题是,当我单击单选按钮时,什么也没有发生/没有吐司消息,也没有setText()似乎被调用。请帮帮我。之前谢谢。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    final View rootView = inflater.inflate(R.layout.activity_search, container,false);
    final LinearLayout l = (LinearLayout)inflater.inflate(R.layout.activity_search, container, false);
    final TextView tv = new TextView(container.getContext());
    tv.setText("Testing...");
    l.addView(tv);
    RadioGroup radios = (RadioGroup) rootView.findViewById(R.id.radios);
    radios.setOnCheckedChangeListener(new OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            tv.setText("changedText");
            l.addView(tv);
            Toast.makeText(getActivity(), "zzzz", 2000).show(); 

            switch(checkedId) {
            case R.id.rbtn_sell:
                tv.setText("changedText");
                l.addView(tv);
                break;
            case R.id.rbtn_rent:
                RadioButton radioButton = (RadioButton) rootView.findViewById(checkedId);
                Toast.makeText(getActivity(), "zzzz" + radioButton.getText(), 2000).show(); 
                break;
            }
        }
    });
    return l;
}
4

1 回答 1

1
  final View rootView = inflater.inflate(R.layout.activity_search, container,false);
  final LinearLayout l = (LinearLayout)inflater.inflate(R.layout.activity_search, container, false);

问题就在这里。您正在膨胀两次相同的布局并返回l,但附加在OnCheckedChangeListener您检索的 RadioGroup 上rootView。它应该是

 RadioGroup radios = (RadioGroup) l.findViewById(R.id.radios);

代替

 RadioGroup radios = (RadioGroup) rootView.findViewById(R.id.radios);

同样在里面onCheckedChanged你应该删除l.addView,否则你的应用程序会崩溃,因为TextView已经作为父级l

于 2014-04-08T16:48:35.590 回答