1

RadioGroupXMLでレイアウトを作成しました。だから私はそれを動的に作成します:

RadioGroup segmentRadioGroup = new RadioGroup(parentActivity);
inflater.inflate(R.layout.segm_btn_stores, segmentRadioGroup);           
segmentRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup radioGroup, int i) {
            showMap();
        }
    });

ああ、それは動作しません !showMap発砲していません!

ちょっと待って。このようにするとどうなりますか?

RadioGroup segmentRadioGroup = (RadioGroup) inflater.inflate(R.layout.segm_btn_stores, null);

できます。なんで?両方の場合ですsegmentRadioGroup。そして、代わりに作成された前RadioGroupに渡すと、それも機能しません。segmentRadioGroupnull

4

2 に答える 2

3
RadioGroup segmentRadioGroup = new RadioGroup(parentActivity);

上記の行では、 'empty' を作成していますRadioGroup。それで...

inflater.inflate(R.layout.segm_btn_stores, segmentRadioGroup);

...上記の行ではRadioGroup、レイアウト ファイルから別のものを膨張させ、それを最初の に「追加」しRadioGroupます。ここでの論理は、RadioGroupextends (そして事実上 IS)として、 aが another を含むLinearLayoutことは正当であるということのようです。RadioGroupRadioGroup

segmentRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { ...});

最後に、上記の行で、リスナーをRadioGroupinner ではなくouter /parent に設定しますRadioGroup。そのため、onCheckedChanged(...)メソッドが inner に対して呼び出されることはありませんRadioGroup

それが私が思いつくことができる唯一の論理です。

あなたの2番目のアプローチで...

RadioGroup segmentRadioGroup = (RadioGroup) inflater.inflate(R.layout.segm_btn_stores, null);

RadioGroup2 番目のパラメーターとして 'null' を渡すため、外側の親レイアウトなしで単純に 1 つを膨らませています。

于 2012-06-19T18:01:06.890 に答える
0

これはうまくいくはずです:

RadioGroup segmentRadioGroup = inflater.inflate(R.layout.segm_btn_stores, null);           
segmentRadioGroup.setOnCheckedChangeListener(
      new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, int i) {
                showMap();
            }
      });
// add to the parent layout here..
于 2012-06-19T18:07:43.337 に答える