我的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;
}
}
}
答案 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)
你必须提交该交易!
还要确保正确实例化您的片段