1. 程式人生 > >如何在fragment中獲取自定義view的控制元件id

如何在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()來表示,否則報一堆空指標。完畢

相關推薦

no