2017-01-22 23 views
1

私の財務管理に役立つアプリケーションを開発します。だから今私は、ViewPagerに接続されているTabLayoutを持っている。このViewPager用アダプタは次のようになります。今1つのフラグメントから別のフラグメントにデータを渡す| ViewPagerフラグメントの内容を変更する(ViewPager内)

package de.financeplanner.util.adapter.pager; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 

import de.financeplanner.fragment.BaseListFragment; 

/** 
* Dient als Adapter für den ViewPager 
* Diese Klasse wird an ein TabLayout gebunden um so bei einem 
* Tabwechsel den ViewPager zu updaten. 
* Created by Christian on 20.01.2017. 
*/ 

public class PagerAdapter extends FragmentPagerAdapter { 

    private static final int PAGE_COUNT = 4; 

    private final String tabTitles[] = new String[] { "Übersicht", "Einnahmen", "Ausgaben", "Kategorie" }; 

    public PagerAdapter(FragmentManager fragmentManager) { 
     super(fragmentManager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     BaseListFragment fragment = new BaseListFragment(); 
     Bundle startCondition = new Bundle(); 
     final String arg = "startCondition"; 
     switch(position){ 
      case PagerTabConstants.OVERVIEW: startCondition.putInt(arg, PagerTabConstants.OVERVIEW); 
          break; 
      case PagerTabConstants.REVENUES: startCondition.putInt(arg, PagerTabConstants.REVENUES); 
          break; 
      case PagerTabConstants.EXPENSES: startCondition.putInt(arg, PagerTabConstants.EXPENSES); 
          break; 
      case PagerTabConstants.CATEGORY: startCondition.putInt(arg, PagerTabConstants.CATEGORY); 
          break; 
     } 
     fragment.setArguments(startCondition); 
     return fragment; 
    } 

    @Override 
    public int getCount() { 
     return PAGE_COUNT; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return tabTitles[position]; 
    } 

} 

、あなたは、新しいフラグメントをロードする必要があるとクリックした項目のデータを新しいフラグメントに渡すべきである、項目にBaseListFragment内側をクリックすることができます。 これは私の問題です。私はどのようにしてフラグメントにデータを渡すことができますか?古いフラグメントを新しいフラグメントに置き換えるにはどうしたらいいですか?タブ内のフラグメントはFragmentPagerAdapterによってロードされるためです。より良く理解するため は、私はあなたのためのこのイメージを持っている:

MainActivity TabLayout

答えて

0

あなたの既存のフラグメント内のボタンをクリックすると、あなたのためのフラグメントを置き換えることができ、あなたのメインの活動内のメソッドを呼び出します。

MainActivity parentActivity = (MainActivity) getActivity(); 
parentActivity.changeFragment(); 

MainActivityでchangeFragmentメソッドを呼び出して、フラグメントを変更したり置き換えたりできます。

+0

うん、しかし、主な問題は、私のFragmentPagerAdapterがフラグメント置換を処理することです。手動でフレグランスを交換したいときは、コンテナIDが必要です。コンテナIDはありません.FragmentPagerAdapterがこれを処理するためです... – Chris

関連する問題