如何将数据从活动传递到可转换的片段?

时间:2016-05-29 09:12:18

标签: android fragment

我有活动中的数据,其中一些数据我想在活动本身中显示,一些数据我想在三个可跳过的片段中显示。那么我如何将数据从活动传递给那些片段。我要把我想做的事情写下来。in this image, i have some data to show upper part in activity and other i want to show in fragments so that's why i want to pass that data in to swipable fragments.

请给出解决方案。谢谢。

1 个答案:

答案 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)将数据传递给片段。

现在我认为您可以将数据传递给可转换的视图。

希望这有帮助!