答案 0 :(得分:1)
我认为您的主要问题是如何将数据从活动传递到片段?对吗?
您可以通过创建Bundle并将一些数据传递给它来将数据从活动传递到片段,然后将其传递给setArguments方法。
YourFragment yourFragment = new YourFragment();
Bundle bundle = new Bundle();
bundle.putInt(KEY_RECIPE_INDEX, index);//you can use bundle.putString or others to pass different types of data
yourFragment.setArguments(bundle);
现在,您可以使用getArguments
来检索片段中的数据@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
int index = getArguments().getInt(ViewPagerFragment.KEY_RECIPE_INDEX);
//........
您还在问题中询问您的活动中有一些数据以及您想要在活动中显示的一些数据以及您希望以可跳过的片段显示的一些数据。现在我将向您展示如何操作通过使用一个例子。
假设您有两个可转换标签,每个标签都有一个片段
final IngredientsFragment ingredientsFragment = new IngredientsFragment();
Bundle bundle = new Bundle();
bundle.putInt(KEY_RECIPE_INDEX, index);
ingredientsFragment.setArguments(bundle);
final DirectionsFragment directionsFragment = new DirectionsFragment();
bundle = new Bundle();
bundle.putInt(KEY_RECIPE_INDEX, index);
directionsFragment.setArguments(bundle);
ViewPager viewPager = (ViewPager) view.findViewById(R.id.viewPager);
viewPager.setAdapter(new FragmentPagerAdapter(getChildFragmentManager()) {
@Override
public android.support.v4.app.Fragment getItem(int position) {
return position == 0 ? ingredientsFragment : directionsFragment;
}
@Override
public CharSequence getPageTitle(int position) {
return position == 0 ? "Ingredients" : "Directions";
}
@Override
public int getCount() {
return 2;
}
});
TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tabLayout);
tabLayout.setupWithViewPager(viewPager);
我认为您希望在活动中显示的数据没有问题。
Qick回顾:您通过创建一个包并放置一些数据并使用yourfragment.setArguments(yourBundle)将数据传递给片段。
现在我认为您可以将数据传递给可转换的视图。
希望这有帮助!