1
我开发了一个应用程序,它应该可以帮助我管理财务状况。所以现在我有一个TabLayout,它连接到一个ViewPager。此ViewPager适配器看起来是这样的:将数据从一个片段传递到另一个片段|更改ViewPager Fragment的内容(在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内点击一个项目,然后一个新的片段应该被加载,并从点击项目的数据应该传递给新的片段。 这是我的问题。我知道,我怎样才能将数据传递给片段,但我怎样才能用新的片段替换旧的片段?因为Tab中的Fragment由FragmentPagerAdapter加载。 为了更好地理解,我有这个图片给你:
好的,但主要的问题是,我的FragmentPagerAdapter处理片段替换。当我想手动替换一个fragent,我需要一个容器ID,并且我没有容器ID,因为FragmentPagerAdapter为我处理这个... – Chris