您的位置:首页 > 其它

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

2017-08-20 17:39 531 查看
今天在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()来表示,否则报一堆空指针。完毕
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  控件 广告 指针 csdn