将数据从 Activity 发送到 TabLayout 片段

Send Data from Activity to TabLayout fragments

我在设计一个应用程序时遇到了问题,

我在 MainActivity.class 中有一个 字符串日期; 并且有两个片段。

入站日期 & 出站日期

我是通过 TabLayout 和 ViewPager 设计的,当我向片段发送日期时遇到问题并且必须通过 POST 对两个片段的请求调用 WebServices。

下面是我在 MainActivity.class 中的日期,我如何将这个日期发送到两个片段并调用 jsonRequest 并将 Recyclerview 设置为两个片段或者如果我将 jsonRequest 调用到 MainActivity 本身那么我怎么能显示给两个片段。

 date = getIntent().getStringExtra("DATE");
    Log.e("DATE",""+date);

ViewPager 和 TabLayout 代码:

 private void setupViewPager(ViewPager viewPager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    adapter.addFrag(new InBoundDate(),"INBOUND");
    adapter.addFrag(new OutBoundDate(),"OUTBOUND");
    viewPager.setAdapter(adapter);

}

//viewPager adapter ----- inbound & outbound
public class ViewPagerAdapter extends FragmentPagerAdapter {
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

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

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

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

    public void addFrag(android.support.v4.app.Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }
}

我通过互联网搜索得到了这个问题的答案。 在这个问题中,我必须将字符串发送到 MainActivity.java 到存在于相同 Activity.

上的片段

注意:我们必须创建捆绑对象并且必须通过捆绑发送字符串(任何数据类型)。

我有两个片段 InBoundDate & OutBoundDate.

MainActivity.java在setupViewpager()

 private void setupViewPager(ViewPager viewPager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());

    //bundle
    bundle =new Bundle();
    bundle.putString("DATE","2017-10-19");

    InBoundDate frag_in = new InBoundDate();
    OutBoundDate frag_out = new OutBoundDate();

    frag_in.setArguments(bundle);
    frag_out.setArguments(bundle);
    adapter.addFrag(frag_in,"INBOUND");
    adapter.addFrag(frag_out,"OUTBOUND");
    viewPager.setAdapter(adapter);

}

ViewPager 适配器:

  //viewPager adapter ----- inbound & outbound
public class ViewPagerAdapter extends FragmentPagerAdapter {
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

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

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

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

    public void addFrag(android.support.v4.app.Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }
}

在您的 Fragments 中通过这种方式获取字符串 :

    String dateTxt;
    private Bundle bundle;

    //within OncreateView
     bundle = this.getArguments();
        dateTxt = bundle.getString("DATE");
        Log.e("DATE_FRAG_INBOUND",""+dateTxt);