2017-08-19 2 views
1

In meiner MainActivity habe ich Transaction my MainFragment.Get Fragment von ViewPager Android

MainFragment mainFragment = new MainFragment(); 
getSupportFragmentManager().beginTransaction() 
      .replace(R.id.fragment_holder, mainFragment) 
      .addToBackStack(mainFragment.getClass().getName()) 
      .commit(); 

an meinem MainFragment Ich bin mit einem ViewPager zusammen mit einem FragmentStatePagerAdapter Mein Fragment hosten.

public class TaskPagerAdapter extends FragmentStatePagerAdapter { 

private String cookieString = null; 

private String userString = null; 

public TaskPagerAdapter(FragmentManager fm, Cookie cookie) { 
    super(fm); 
    this.cookieString = HttpUtil.serializeCookie(cookie); 
} 

@Override 
public Fragment getItem(int position) { 
    Fragment fragment = null; 

    switch (position) { 
     case 0: 
      fragment = new NotificationFragment(); 
      break; 
//   case 1: 
//    break; 
//   case 2: 
//    break; 
//   case 3: 
//    break; 
//   case 4: 
//    break; 

    } 
    return fragment; 
} 

@Override 
public int getCount() { 
    return 1; 
} 

@Override 
public CharSequence getPageTitle(int position) { 
    return new String[]{"رویدادها", "توضیحات", "فرم ها"}[position]; 
} 

@Override 
public int getItemPosition(Object object) { 
    return POSITION_NONE; 
} 
} 

und in meinem MainFragment:

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_main, container, false); 
    ButterKnife.bind(this, rootView); 
     mPagerAdapter = new TaskPagerAdapter(getFragmentManager(),cookie); 
    mViewPager.setAdapter(mPagerAdapter); 
    mViewPager.setCurrentItem(0); 
    return rootView; 

nach diesem link ich dieses commend in Hauptfragment schreiben:

   mViewPager.setCurrentItem(0); 


    Fragment page = getActivity().getSupportFragmentManager().findFragmentByTag("android:switcher:" + 
      R.id.pager + ":" + mViewPager.getCurrentItem()); 
    NotificationFragment fragment = (NotificationFragment) page; 
    fragment.setNotificationCallBack(this); 


    mCountNotifyTask.getCountNotifyTask(); 
    return rootView; 

aber Seite abrufen null !! Was schlägst du vor? Ich verwende this tutorial

Ich habe immer noch null.

NotificationFragment fragment = (NotificationFragment) mPagerAdapter.getRegisteredFragment(0); 

Antwort

0

Stattdessen Aktivitäten Fragment-Manager zu verwenden, verwenden ChildFragmentManager in Ihrem MainFragment

mPagerAdapter = new TaskPagerAdapter(getChildFragmentManager(),cookie); 
mViewPager.setAdapter(mPagerAdapter); 
mViewPager.setCurrentItem(0); 

Und das Fragment zu erhalten, das Kind Fragment Manager verwenden

Fragment page = getChildFragmentManager().findFragmentByTag("android:switcher:" + 
     R.id.pager + ":" + mViewPager.getCurrentItem()); 
NotificationFragment fragment = (NotificationFragment) page; 

Denken Sie daran: ViewPager ergänzt und entfernt Fragment basierend auf seiner aktuellen Position Ich würde vorschlagen, alle fragm zu halten ent-Instanz im Adapter als ArrayList und retrive sie, wenn Sie es brauchen basierend auf dem Positionsindex

+0

Ich habe wieder Null. https://ibb.co/g92qbk – sayres

+0

Meine Antwort aktualisiert –

+0

Kannst du mir einen Link als Beispiel schicken? – sayres