我开发了一个应用程序,它可以帮助我管理我的财务状况。所以现在我有一个TabLayout,它连接到一个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];
}
}
现在,您可以在Item上的BaseListFragment内单击,然后应加载一个新的Fragment,并将来自单击的Item的数据传递给新的Fragment。 这是我的问题。我知道,我如何将数据传递给片段,但是如何用新片段替换旧片段?因为Tab内的Fragment是由FragmentPagerAdapter加载的。 为了更好地理解,我已经为您提供了这张图片:
答案 0 :(得分:0)
当您点击现有片段中的某个按钮时,请调用主活动中可以替换您片段的方法。
MainActivity parentActivity = (MainActivity) getActivity();
parentActivity.changeFragment();
然后在MainActivity中调用changeFragment方法,该方法可以更改片段或替换它。