如何在fragment中获取自定义view的控件id

今天在CSDN上下载了一个关于广告轮播的demo,上面的控件是自定义view的控件。当我把它放到项目中犯了难,因为他直接在activity中定义,而我需要将其放入fragment中,所以报了一堆错误还有空指针,主要的问题及解决可见代码,需要注意的问题是,不能直接在oncreate方法中直接初始化控件,而是需要重写onStart()方法:

public void onStart(){
    super.onStart();
    initData();
    // makeInitData();
    // realizeFunc1();
    realizeFunc2();
}
private void initData()
{
    AdvertisementInfo ad1 = new AdvertisementInfo(getActivity(), R.drawable.banner2, "第1张广告");
    AdvertisementInfo ad2 = new AdvertisementInfo(getActivity(), R.drawable.banner3, "第2张广告");
    dataInfos = new
    AdvertisementInfo[]
    {ad1, ad2};}

public void realizeFunc1(){
    adGallery = (AdGallery)getView().findViewById(R.id.adGallery);
            adGallery.setAdOnItemClickListener((OnAdItemClickListener)
    mContext);
    adGallery.init(dataInfos, 2000, new
    OnGallerySwitchListener()
    {
        @ Override
        public void onGallerySwitch(int position) {
            System.out.println("onGallerySwitch position=>" + position);
    }
  }, true);
}

public void realizeFunc2(){
    adContainer = (RelativeLayout)
    getView().findViewById(R.id.ad_container);
    adGalleryHelper = new
    AdGalleryHelper(getActivity(), dataInfos, 2000, true);
    adContainer.addView(adGalleryHelper.getLayout());
    adGallery = adGalleryHelper.getAdGallery();
    adGallery.setAdOnItemClickListener(this);
}

其中比较主要的代码就是
adGallery = (AdGallery)getView().findViewById(R.id.adGallery);
这个是EC提示出来的,不是很理解为神马要这么转换(OnAdItemClickListener) mContext
adGallery.setAdOnItemClickListener((OnAdItemClickListener) mContext);
还有就是所有的上下文要用getActivity()来表示,否则报一堆空指针。完毕

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值