dragonrong8 2016-08-26 02:34 采纳率: 0%
浏览 2088

求大神解决,安卓中radioButton setChecked(true);空指针错误

public class MainActivity extends FragmentActivity implements RadioGroup.OnCheckedChangeListener{

private RadioGroup rg_tab_bar;
private RadioButton channel1;

private FragmentManager fManager;
private MyFragment1 fg1;
private MyFragment2 fg2;
private MyFragment3 fg3;
private MyFragment4 fg4;
private MyFragment5 fg5;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    rg_tab_bar = (RadioGroup)findViewById(R.id.rg_tab_bar);
    rg_tab_bar.setOnCheckedChangeListener(this);

    //获取第一个单选按钮,并设置其为选中状态
    channel1=(RadioButton)findViewById(R.id.rb_channel1);
    channel1.setChecked(true);

    fManager = getSupportFragmentManager();
}


@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {

    FragmentTransaction fTransaction = fManager.beginTransaction();
    hideAllFragment(fTransaction);

    switch (checkedId){
        case R.id.rb_channel1:
            if(fg1 == null){
                fg1 = new MyFragment1();
                fTransaction.add(R.id.ly_content,fg1);
            }else{
                fTransaction.show(fg1);
            }
            break;
        case R.id.rb_channel2:
            if(fg2 == null){
                fg2 = new MyFragment2();
                fTransaction.add(R.id.ly_content,fg2);
            }else{
                fTransaction.show(fg2);
            }
            break;
        case R.id.rb_channel3:
            if(fg3 == null){
                fg3 = new MyFragment3();
                fTransaction.add(R.id.ly_content,fg3);
            }else{
                fTransaction.show(fg3);
            }
            break;
        case R.id.rb_channel4:
            if(fg4 == null){
                fg4 = new MyFragment4();
                fTransaction.add(R.id.ly_content,fg4);
            }else{
                fTransaction.show(fg4);
            }
            break;
        case R.id.rb_channel5:
            if(fg5 == null){
                fg5 = new MyFragment5();
                fTransaction.add(R.id.ly_content,fg5);
            }else{
                fTransaction.show(fg5);
            }
            break;
    }
    fTransaction.commit();
}

//隐藏所有Fragment
private void hideAllFragment(FragmentTransaction fragmentTransaction){
    if(fg1 != null)fragmentTransaction.hide(fg1);
    if(fg2 != null)fragmentTransaction.hide(fg2);
    if(fg3 != null)fragmentTransaction.hide(fg3);
    if(fg4 != null)fragmentTransaction.hide(fg4);
    if(fg5 != null)fragmentTransaction.hide(fg5);
}

}

Caused by: java.lang.NullPointerException
at com.rong.shop.myshop.home.MainActivity.onCheckedChanged(MainActivity.java:43)
at android.widget.RadioGroup.setCheckedId(RadioGroup.java:174)
at android.widget.RadioGroup.access$600(RadioGroup.java:54)
at android.widget.RadioGroup$CheckedStateTracker.onCheckedChanged(RadioGroup.java:358)
at android.widget.CompoundButton.setChecked(CompoundButton.java:130)
at com.rong.shop.myshop.home.MainActivity.onCreate(MainActivity.java:34)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2169)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271) 
at android.app.ActivityThread.access$800(ActivityThread.java:144) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:136) 
at android.app.ActivityThread.main(ActivityThread.java:5146) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566) 
at dalvik.system.NativeStart.main(Native Method) 

我把channel1=(RadioButton)findViewById(R.id.rb_channel1);
channel1.setChecked(true);这两行去掉以切正常
这是什么问题?

  • 写回答

2条回答 默认 最新

  • chencaishengsic 2016-08-26 02:55
    关注

    低级错误。

    fManager = getSupportFragmentManager(); 还没有创建成功,你就用到了。
    把这行代码放到channel1.setChecked(true); 前面。

    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘