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 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题