2016-05-21 2 views
0

У меня есть активность, в которой размещен фрагмент с двумя представлениями mapview и viewpager, которые содержат фрагменты. я не знаю, как сделать фрагмент внутри ViewPager связи с основным фрагментом (фрагмент, которые имеют ViewPager) Это код я использую:Связь между фрагментами внутри viewpager и фрагментом, у которого есть viewpager

public class ViewPagerAdapter extends FragmentPagerAdapter implements Serializable { 
    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 
    public List<Step> steps = new ArrayList<>(); 

    public ViewPagerAdapter(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragmentList.get(position); 
    } 

    @Override 
    public int getCount() { 
     return mFragmentList.size(); 
    } 

    public void addFragment(Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 

    public void addFragment(StepsFragment fragment, Step step){ 
     fragment.getSteps().setText(step.getHtmlInstruction()); 
     mFragmentList.add(fragment); 
     steps.add(step); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return null; 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
    } 
} 

я получаю исключение нулевого указателя, так как все поля не инициализированы ... Я должен делать что-то неправильно, пожалуйста, помогите.

ответ

1

С помощью getSupportFragmentManager через id/tag можно получить доступ к фрагменту, содержащему просмотр пейджера.

// Warning: getActivity() can be null in some cases. 
Fragment fragment = getActivity().getSupportFragmentManager().findFragmentById(R.id.your_fragment); 
if (fragment instanceof FragmentB) 
{ 
    FragmentB fragmentB = (FragmentB) fragment; 

} 

Другой подход - сделать то же самое, но через вашу деятельность. Фрагментация> деятельность-> FragmentB.

https://developer.android.com/training/basics/fragments/communicating.html

+0

спасибо за ответ Я пытаюсь получить некоторые данные из фрагмента, содержащего ViewPager и отправить его ViewPager фрагмента, вместо того, чтобы использовать этот способ доступа фрагмента ... 'общественных недействительные addFragment (фрагмент StepsFragment, шаг Step) { фрагмент.getSteps(). setText (step.getHtmlInstruction()); mFragmentList.add (фрагмент); steps.add (шаг); } 'Я должен использовать метод, который вы мне дали? –

+0

Ах, это также возможно. Я сделал это раньше. Это будет полезно: http://stackoverflow.com/questions/8785221/retrieve-a-fragment-from-a-viewpager - ответил @StreetsOfBoston. Поэтому, если вы находитесь внутри фрагмента с помощью пейджера с представлением, вы можете получить необходимый фрагмент через адаптер для просмотра пейджера! и отправить данные. –

+0

Большое вам спасибо, я попробую с ответом, который вы мне дали –

Смежные вопросы