2017-01-22 125 views
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加载。 为了更好地理解,我有这个图片给你:

MainActivity TabLayout

回答

0

当你在你现有的片段点击一个按钮,打电话给你的主要活动中的方法,可以取代你的片段为您服务。

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

然后在你的MainActivity中调用你的changeFragment方法,它可以改变你的片段或者替换它。

+0

好的,但主要的问题是,我的FragmentPagerAdapter处理片段替换。当我想手动替换一个fragent,我需要一个容器ID,并且我没有容器ID,因为FragmentPagerAdapter为我处理这个... – Chris

相关问题