2017-10-18 30 views
0

Je suis la conception d'une application dans laquelle je suis problème auquel sont confrontés,Envoyer des données de l'activité à des fragments TabLayout

J'ai une date String ; dans MainActivity.class et il existe deux fragments.

InboundDate & OutboundDate

Je l'ai conçu par TabLayout & ViewPager, je reçois problème quand je la date d'envoi à des fragments & doivent appeler WebServices par requête POST sur les deux fragments. Comment puis-je envoyer cette date à la fois les fragments & appel jsonRequest et définir Recyclerview à la fois les fragments Ou si j'appelle le jsonRequest à MainActivity lui-même alors comment puis-je afficher à la fois les fragments.

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

ViewPager & code 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); 
    } 
} 

Répondre

1

J'ai eu la réponse de cette question en effectuant une recherche sur Internet. Dans cette question, je dois envoyer une chaîne à MainActivity.java à des fragments présents sur la même activité.

Remarque: Nous devons créer l'objet de groupe & pour envoyer une chaîne (tout type de données) par groupe.

J'ai deux fragments InBoundDate & OutBoundDate.

Dans MainActivity.java dans 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 Adaptateur:

//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); 
    } 
} 

Dans votre Fragments get cordes de cette façon:

String dateTxt; 
    private Bundle bundle; 

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