У меня есть основное домашнее действие, которое состоит из 3 вкладок внизу экрана.
Внутри этого activity
У меня fragment
.
Этот фрагмент содержит view pager
. Этот пейджер просмотра используется для перехода между двумя действиями:
1. Форма упражнения = Отображает видео для упражнения.
2. История упражнений = Здесь отображаются все данные, записанные пользователями. упражнение.
объяснение_фото
Чтобы получить видео формы упражнения, а также историю упражнений, мне нужно иметь доступ к ExerciseName из ProgressFagment2 (текст в верхней части экрана) и передать его 2 дочерним элементам фрагменты (ExerciseHomeVideoFragment и ExerciseHistoryFragment)
Как мне получить доступ к exerciseName
в дочерних фрагментах?
ProgressFragment2 (Фрагмент внутри действия)
public class Progress_Fragment2 extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.exercises_history_demo, container, false);
}
public void onViewCreated(View view, Bundle savedInstanceState) {
childExerciseName = getArguments().getString("ExerciseName");
TextView title_tv = getView().findViewById(R.id.textView_exerciseName8);
title_tv.setText(childExerciseName);
SectionsPagerAdapter mSectionsPagerAdapter = new SectionsPagerAdapter(getFragmentManager());
// Set up the ViewPager with the sections adapter.
ViewPager mViewPager = (ViewPager) getView().findViewById(R.id.view_pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
TabLayout tabLayout = (TabLayout) getView().findViewById(R.id.tabs);
tabLayout.setupWithViewPager(mViewPager);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// Inflate the menu; this adds items to the action bar if it is present.
inflater.inflate(R.menu.top_navigation_two, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Fragment fragment = null;
switch (position) {
case 0:
fragment = new ExerciseHomeVideoFragment();
break;
case 1:
fragment = new ExerciseHistoryFragment();
break;
}
return fragment;
}
@Override
public int getCount() {
// Show 2 total pages.
return 2;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "Exercise Form";
case 1:
return "Exercise History";
}
return null;
}
}
}
ExerciseHomeVideoFragment (один из 2 фрагментов внутри viewPager) | Только соответствующий код
public class ExerciseHomeVideoFragment extends Fragment implements View.OnClickListener {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_exercise_info_home_version, container, false);
}
@RequiresApi(api = Build.VERSION_CODES.O)
public void onViewCreated(View view, Bundle savedInstanceState) {
Progress_Fragment2 parentFrag = ((Progress_Fragment2)ExerciseHomeVideoFragment.this.getParentFragment());
youTubeBtn = getView().findViewById(R.id.youTubeSearchButton);
parent_tv = getView().findViewById(R.id.textView_exerciseName8);
childExerciseViewModel = ViewModelProviders.of(this).get(ChildExerciseViewModel.class);
//
// HOW CAN I ACCESS THE CHILDEXERCISE NAME???
//
// childExerciseName = getArguments().getString("ExerciseName"); // THIS DOESNT WORK
// exerciseNameTV.setText(childExerciseName + " Demo");
}
}