qq_42345626 2019-07-02 16:40 采纳率: 0%
浏览 685

fragment添加动态单选框radiogroup.addView(button)报错为空。

在fragment中动态添加单选框时(参照的https://blog.csdn.net/shihuiyun/article/details/52935392), radiogroup.addView(button);报错Attempt to invoke virtual method 'void android.widget.RadioGroup.addView(android.view.View)' on a null object reference;我的定义radiobutton了啊

``` public void initViewTwo(){
RadioGroup radiogroup=(RadioGroup)getActivity().findViewById(R.id.gadiogroup);

    addview(radiogroup);
}

public List<String> getListSize(){
    List<String>list=new ArrayList<String>();
    list.add("服装33333");
    list.add("玩具44444");
    list.add("饰品5555");
    list.add("饰品6666");
    list.add("文具7777");
    list.add("文具8888");
    list.add("文具9999");
    return list;
}

//动态添加视图
public void addview(RadioGroup radiogroup){

    int index=0;
    for(String ss:getListSize()){
        RadioButton  button=new RadioButton(getActivity());
        setRaidBtnAttribute(button,ss,index);
        radiogroup.addView(button);

        LinearLayout.LayoutParams layoutParams= (LinearLayout.LayoutParams) button
                .getLayoutParams();
        layoutParams.setMargins(0, 0,  DensityUtil.dpToPx(getActivity(),10), 0);//4个参数按顺序分别是左上右下
        button.setLayoutParams(layoutParams);
        index++;
    }


}


@SuppressLint("ResourceType")
private void setRaidBtnAttribute(final RadioButton codeBtn, String btnContent, int id ){
    if( null == codeBtn ){
        return;
    }
    // codeBtn.setBackgroundResource(R.drawable.radio_select);
    codeBtn.setTextColor(this.getResources().getColorStateList(R.drawable.top_select));
    codeBtn.setButtonDrawable(new ColorDrawable(Color.TRANSPARENT));
    //codeBtn.setTextSize( ( textSize > 16 )?textSize:24 );
    codeBtn.setId( id );
    codeBtn.setText( btnContent );
    //codeBtn.setPadding(2, 0, 2, 0);

    codeBtn.setGravity( Gravity.CENTER );
    codeBtn.setOnClickListener( new OnClickListener( ) {
        @Override
        public void onClick(View v) {
            Toast.makeText(getActivity(), codeBtn.getText().toString(), Toast.LENGTH_SHORT).show();
        }
    });
    //DensityUtilHelps.Dp2Px(this,40)
    LinearLayout.LayoutParams rlp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT , DensityUtil.dpToPx(getActivity(),25) );

    codeBtn.setLayoutParams( rlp );
}
  • 写回答

1条回答 默认 最新

  • 你好好呀! 2019-07-03 14:29
    关注

    RadioGroup radiogroup=(RadioGroup)getActivity().findViewById(R.id.gadiogroup); 这句代码有问题 首先 你的gadiogroup定义在哪里 如果定义在activity中 那就在activityfindViewById 如果定义在fragment的布局中 那么就不能这么写 只能用fragment的布局对象view来findviewbyid,不然你这样获取的是null的

    评论

报告相同问题?

悬赏问题

  • ¥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系统的硬盘