想要在选中单选按钮时添加/ replace.show两个片段

时间:2016-03-11 06:51:32

标签: android android-fragments fragment

我的fragments内有layouts创建了两个Activity。 我有两个radioButtons。 .R1和R2在我的活动中定义 我已实施onCheckedChange(),但在点击fragments时不知道如何添加/替换radioButton

我想在选中R1时显示Frag1,在检查R2时显示Frag2 ..

请帮助并建议代码

我尝试过以下代码..但无法正常运行并显示错误“很遗憾您的应用已停止”

我试过的代码是

public class MainActivity extends Activity implements  OnCheckedChangeListener
{
Fragment1 frag1; 
Fragment2 frag2;
FragmentManager manager;
FragmentTransaction transaction;
RadioGroup rg;
public void onCreate(Bundle b)
{
    super.onCreate(b);
    setContentView(R.layout.activity_main);
    rg = (RadioGroup)findViewById(R.id.rg1);
    rg.setOnCheckedChangeListener(this);       
    RadioButton rb1 = (RadioButton)findViewById(R.id.rb1);
    rb1.setchecked(true);

    manager = getFragmentManager();
    transaction = manager.beginTransaction();
    transaction.add(R.id.frame1, frag1, "frag1");
    transaction.commit();
}

public void onCheckedChange(...)
{
   transaction = manager.beginTransaction();
   switch(group.getCheckedRadioButtonId())
       {
           case R.id.rb1;
                transaction.replace(R.id.frame1, frag1, "frag1");
                break;
           case R.id.rb2;
                transaction.replace(R.id.frame1, frag2, "frag2");
                break;
   } 
}

}

2 个答案:

答案 0 :(得分:1)

Fragment1 frag1 = new Fragment1();
Fragment2 frag2 = new Fragment2();
FragmentManager manager;
FragmentTransaction transaction;
RadioGroup rg;

public void onCreate(Bundle b) {
    super.onCreate(b);
    setContentView(R.layout.activity_main);
    rg = (RadioGroup) findViewById(R.id.rg1);
    rg.setOnCheckedChangeListener(this);
    RadioButton rb1 = (RadioButton) findViewById(R.id.rb1);
    rb1.setChecked(true);
}

@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
    manager = getFragmentManager();
    transaction = manager.beginTransaction();
    switch (group.getCheckedRadioButtonId()) {
        case R.id.rb1:
            transaction.replace(R.id.frame1, frag1, "frag1");
            transaction.commit();
            break;
        case R.id.rb2:
            transaction.replace(R.id.frame1, frag2, "frag2");
            transaction.commit();
            break;
    }
}

答案 1 :(得分:0)

你必须提交该交易!

还要确保正确实例化您的片段