Пустой контейнер во фрагменте Android

Я работаю над функцией автоматического обнаружения всех дочерних элементов во фрагменте. Функция берет контейнер Viewgroup каждого фрагмента и получает весь дочерний элемент внутри.

Однако, когда у меня есть только 1 страница в моем фрагменте, контейнер пуст, или также, когда у меня есть 2 страницы, первый контейнер пуст. (не пытайтесь с большей страницей)

Ps: у меня нет ошибки при сборке и фрагмент хорошо отображается

Можете ли вы помочь мне понять это, спасибо

Вот код и логкат партнеров

public class ContentView extends FragmentStatePagerAdapter{
private int idIhm[];
private int nbPage;

public ContentView(FragmentManager fm,int idIhm [],int nbPage ) {
    super(fm);
    this.idIhm = idIhm;
    this.nbPage = nbPage;
}


@Override
public Fragment getItem(int i) {
    if ((i<nbPage)||(i>0)){
        return new IHMControl(idIhm[i]); 
    }
    else
    return null;
}
@Override
public int getCount() {
    // TODO Auto-generated method stub
    return nbPage; //No of Tabs
}

Класс IHMControl:

public class IHMControl extends Fragment {  
int layout;
static View ihm;
public static HashSet<Element> ElementList = new HashSet<Element>();

public IHMControl (int layout){
    this.layout=layout;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {

    ihm = inflater.inflate(layout, container, false);
    View currentView=getView();
    ArrayList<View> allViewArrayList =getAllChildren(container);
    Log.d("child","enter");
    for (View child : allViewArrayList){
        Log.d("child","elem");
        if (child instanceof ImageView){
            Log.d("child","LED");
        }
        else if (child instanceof TextView){
            Log.d("child","texte");
        }
        else if (child instanceof Button){
            Log.d("child","button");
        }
    }
    return ihm;
}

public static View getCurrentIHMView(){
return ihm; 
}


private ArrayList<View> getAllChildren(View v){

    if (!(v instanceof ViewGroup)){ 
        ArrayList<View> viewArrayList =new ArrayList<View>();
        viewArrayList.add(v);
        return viewArrayList;
    }
    ViewGroup viewGroup=(ViewGroup)v;
    int nb=viewGroup.getChildCount();

    Log.d("child",""+nb);
    ArrayList<View> result =new ArrayList<View>();
    for (int i=0;i<nb;i++){

        ArrayList<View> viewArrayList =new ArrayList<View>();
        View child= viewGroup.getChildAt(i);
        viewArrayList.add(viewGroup);
        viewArrayList.addAll(getAllChildren(child));

        result.addAll(viewArrayList);
    }

    return result;      
}

Логкат

With 1 page

I/ActivityManager(  413): START u0 {cmp=com.projetihm.menu/com.projetihm.afficha
ge.IHMView (has extras)} from pid 16348
D/child   (16348): 0
D/child   (16348): enter


With 2 pages

D/mali_winsys(16348): new_window_surface returns 0x3000
I/ActivityManager(  413): START u0 {cmp=com.projetihm.menu/com.projetihm.afficha
ge.IHMView (has extras)} from pid 16348
D/child   (16348): 0
D/child   (16348): enter
D/child   (16348): 1
D/child   (16348): 1
D/child   (16348): 11
D/child   (16348): 6
D/child   (16348): 9
D/child   (16348): 9
D/child   (16348): 9
D/child   (16348): enter
D/child   (16348): elem
D/child   (16348): elem
D/child   (16348): elem
D/child   (16348): elem
D/child   (16348): elem
D/child   (16348): LED
D/child   (16348): elem
D/child   (16348): elem
D/child   (16348): LED
D/child   (16348): elem
D/child   (16348): elem
D/child   (16348): LED
D/child   (16348): elem
D/child   (16348): elem
D/child   (16348): LED
D/child   (16348): elem
D/child   (16348): elem
D/child   (16348): LED
D/child   (16348): elem

РЕДАКТИРОВАТЬ:

        for(int i=0;i<Globals.getTabLengh(ihmList.get(position).ihmPageName);++i){                  
            page_selected[i] = getResources().getIdentifier(ihmList.get(position).ihmPageName[i], "xml", getPackageName());
            nbPage = i+1;
        }

я получаю идентификатор файла XML по его имени. Этот xml-файл помещается в папку "RES/xml"

 /*******************************************************************************
                        Fragment (slider)  
 *******************************************************************************/
    public void FragmentIHM(){
        // Initialization
        viewPager = (ViewPager) findViewById(R.id.pager);
        //création des vues avec la class ContentView
        mAdapter = new ContentView(getSupportFragmentManager(),page_selected,nbPage);
        viewPager.setAdapter(mAdapter);

        //indicateur personalisé pour savoir sur quelle page on se trouve
        mIndicator = (CirclePageIndicator)findViewById(R.id.indicator);
        mIndicator.setViewPager(viewPager);

        //action sur le changement de page
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                mIndicator.onPageSelected(position);
            }
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                // TODO Auto-generated method stub
                mIndicator.onPageScrolled( position, positionOffset, positionOffsetPixels);
            }       
            @Override
            public void onPageScrollStateChanged(int state) {
                // TODO Auto-generated method stub
                mIndicator.onPageScrollStateChanged(state);
            }
        });
    }

Тибо

0 ответов

Другие вопросы по тегам