2017-01-31 13 views
0

バンドルデータをあるタブフラグメントから別のタブフラグメントに渡したいアプリケーションを作成する.1つのフラグメントに2つのタブを作成してリストを取得しましたが、今はRecyclerviewcheckboxを使用してリストを選択し、この選択した項目をスワイプの別のタブ断片に設定します。viewpagerを使用してタブを作成します。2番目のタブ断片セットのバンドルと最初のタブ断片はバンドルを取得しますが機能しません。主な活動を通じてfragments間でタグにアクセスするためのメカニズムを作成1つのタブフラグメントから別のタブフラグメントにバンドルを渡す

:第2のフラグメントで

私は、バンドル

if (bundle != null) { 
     String name = bundle.getString("name"); 
     String mobile = bundle.getString("mobile"); 
     // object of Model Class 
     mydata.setName(name); 
     mydata.setMobile(mobile); 
     myDataArrayList.add(mydata); 

    } 
+0

あなたは次のフラグメントでバンドル値を取得している方法では? –

+0

onCreateView .. – user7108398

+0

onCreateViewは、最初にビューを追加してフレートを表示したときにビューページで1回しかコールしません。 –

答えて

0

はこれを試してもらう最初のフラグメントで

Bundle data = new Bundle(); 
    data.putString("name",contactArrayList.get(position).getContactName()); 
    data.putString("mobile",contactArrayList.get(position).getContactNumber()); 
    Fragment fragment = FragmentInfo.newInstance(1); 
    fragment.setArguments(data); 

をバンドルセット、。 - onCreateView()getTag()FragmentBと電話してください。それをメインアクティビティに渡します。 FragmentAが何かをFragmentBに渡す必要がある場合は、MainActivityから取得します。完全な実装については

public static class TabsAdapter extends FragmentPagerAdapter 
    implements ActionBar.TabListener, ViewPager.OnPageChangeListener { 

    private final Context mContext; 
     private final ActionBar mActionBar; 
     private final ViewPager mViewPager; 
     private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>(); 

     static final class TabInfo { 
      private final Class<?> clss; 
      private final Bundle args; 

      TabInfo(Class<?> _class, Bundle _args) { 
       clss = _class; 
       args = _args; 
      } 
     } 

    public TabsAdapter(FragmentActivity activity, ViewPager pager) { 
    super(activity.getSupportFragmentManager()); 
      mContext = activity; 
      mActionBar = activity.getActionBar(); 
      mViewPager = pager; 
      mViewPager.setAdapter(this); 
      mViewPager.setOnPageChangeListener(this); 
     } 

    public void addTab(ActionBar.Tab tab, Class<?> clss, Bundle args) { 
      TabInfo info = new TabInfo(clss, args); 
      tab.setTag(info); 
      tab.setTabListener(this); 
      mTabs.add(info); 
      mActionBar.addTab(tab); 
      notifyDataSetChanged(); 
     } 

    @Override 
    public void onPageScrollStateChanged(int state) { 
    // TODO Auto-generated method stub 

    } 

    @Override 
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
    // TODO Auto-generated method stub 

    } 

    @Override 
    public void onPageSelected(int position) { 
    // TODO Auto-generated method stub 
    mActionBar.setSelectedNavigationItem(position); 
    } 

    @Override 
    public void onTabReselected(Tab tab, FragmentTransaction ft) { 
    // TODO Auto-generated method stub 

    } 

    @Override 
    public void onTabSelected(Tab tab, FragmentTransaction ft) { 
    Object tag = tab.getTag(); 
      for (int i=0; i<mTabs.size(); i++) { 
       if (mTabs.get(i) == tag) { 
        mViewPager.setCurrentItem(i); 
       } 
      } 
    } 

    @Override 
    public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
    // TODO Auto-generated method stub 

    } 

    @Override 
    public Fragment getItem(int position) { 
    TabInfo info = mTabs.get(position); 
      return Fragment.instantiate(mContext, info.clss.getName(), info.args); 
    } 

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

} 

このリンクを参照してください。

http://android-er.blogspot.com/2012/06/communication-between-fragments-in.html

関連する問題