2014-12-03 53 views
-1

在我的應用程序中,我想使用片段內四個選項卡的滑動視圖。四個選項卡分別包含不同的片段,並且所有四個片段都通過從右向左滑動來滑動,反之亦然。片段工作正常,但片段中不可見標籤。任何人都有這方面的解決方案。感謝提前:)爲什麼製表符在片段內不可見?

這是包含選項卡中的主要片段: -

public class DashboardTabFragment extends Fragment implements ActionBar.TabListener { 

private static final String ARG_SECTION_NUMBER = "arg_section_number"; 
private String[] tabTitle = {"Cleanness", "Product Display", "Hygiene", "Asm Visits"}; 

public static DashboardTabFragment newInstance(int position) { 
    DashboardTabFragment fragment = new DashboardTabFragment(); 
    Bundle args = new Bundle(); 
    args.putInt(ARG_SECTION_NUMBER, position); 
    fragment.setArguments(args); 
    return fragment; 
} 

private ViewPager viewPager; 

public DashboardTabFragment() { 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 

@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_dashboard_tab, container, false); 
    setHasOptionsMenu(true); 
    ActionBar actionBar = ((ActionBarActivity) getActivity()).getSupportActionBar(); 
    assert actionBar != null; 
    actionBar.setHomeButtonEnabled(false); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    actionBar.setHomeButtonEnabled(true); 
    actionBar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE); 
    viewPager = (ViewPager) rootView.findViewById(R.id.pager); 
    TabPageAdapter tabPageAdapter = new TabPageAdapter(getActivity().getSupportFragmentManager(), getActivity()); 
    viewPager.setAdapter(tabPageAdapter); 
    for (String aTabTitle : tabTitle) 
     actionBar.addTab(actionBar.newTab().setText(aTabTitle).setTabListener(this)); 
    return rootView; 
} 

這是片段適配器: -

public class TabPageAdapter extends FragmentPagerAdapter { 
Context context; 
public TabPageAdapter(FragmentManager fm,Context context) { 
    super(fm); 
    this.context = context; 
} 

@Override 
public Fragment getItem(int position) { 

    switch (position) { 
     case 0: 
      return new CleannessChartFragment(context); 
     case 1: 
      return new ProductDisplayChartFragment(context); 
     case 2: 
      return new HygieneChartFragment(context); 
     case 3: 
      return new AsmVisitsChartFragment(context); 
    } 

    return null; 
} 

@Override 
public int getCount() { 
    return 4; 
} 
+0

把一些代碼.... – 2014-12-03 07:34:44

+0

'但標籤是不可見的片段?'請說明! – 2014-12-03 07:51:57

+0

表示標籤正在工作但不可見。 – Biswajit 2014-12-03 09:00:20

回答

0

我找到了解決辦法。我使用TabHost作爲與viewpager的選項卡。

這是我的片段: -

package com.itpp.trt; 

import android.annotation.TargetApi; 
import android.app.Activity; 
import android.graphics.Color; 
import android.os.Build; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.app.FragmentTabHost; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.ActionBar; 
import android.support.v7.app.ActionBarActivity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.LinearLayout; 
import android.widget.TabHost; 

public class DashboardTabFragment extends Fragment implements ViewPager.OnPageChangeListener { 

private static final String ARG_SECTION_NUMBER = "arg_section_number"; 
private ViewPager mViewPager; 
private TabHost tabHost; 
private String[] tabSpec = {"Tab_1", "Tab_2", "Tab_3", "Tab_4"}; 
private String[] tabTitle = {"Cleanness", "Product Display", "Hygiene", "Asm Visits"}; 


private TabHost.TabContentFactory mFactory = new TabHost.TabContentFactory() { 

    @Override 
    public View createTabContent(String tag) { 
     View v = new View(getActivity()); 
     v.setMinimumHeight(0); 
     return v; 
    } 
}; 

public static DashboardTabFragment newInstance(int position) { 
    DashboardTabFragment fragment = new DashboardTabFragment(); 
    Bundle args = new Bundle(); 
    args.putInt(ARG_SECTION_NUMBER, position); 
    fragment.setArguments(args); 
    return fragment; 
} 

public DashboardTabFragment() { 
    tabHost = null; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 

@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_dashboard_tab, container, false); 

    mViewPager = (ViewPager) rootView.findViewById(R.id.pager); 
    mViewPager.setAdapter(new TabPageAdapter(getChildFragmentManager(), getActivity())); 
    tabHost = (TabHost) rootView.findViewById(android.R.id.tabhost); 
    tabHost.setup(); 
    mViewPager.setOnPageChangeListener(this); 
    for (int i = 0; i < tabSpec.length; i++) { 
     tabHost.addTab(tabHost.newTabSpec(tabSpec[i]).setIndicator(tabTitle[i]).setContent(mFactory)); 
    } 

    tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() { 
     @Override 
     public void onTabChanged(String tabId) { 

      if (tabId.equals("Tab_1")) { 
       mViewPager.setCurrentItem(0); 
      } else if (tabId.equals("Tab_2")) { 
       mViewPager.setCurrentItem(1); 
      } else if (tabId.equals("Tab_3")) { 
       mViewPager.setCurrentItem(2); 
      } else if (tabId.equals("Tab_4")) { 
       mViewPager.setCurrentItem(3); 
      } 
     } 

    }); 
    return rootView; 
} 


@Override 
public void onAttach(Activity activity) { 
    super.onAttach(activity); 
    ((MyActivity) activity).onSectionAttached(getArguments().getInt(ARG_SECTION_NUMBER)); 
} 

@Override 
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

} 

@Override 
public void onPageSelected(int position) { 
    tabHost.setCurrentTab(position); 
} 

@Override 
public void onPageScrollStateChanged(int state) { 

} 

@Override 
public void onDetach() { 
    super.onDetach(); 

} 
} 

這是我tabpager適配器: -

package com.itpp.trt; 

import android.content.Context; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.app.FragmentStatePagerAdapter; 

/** 
* Created by biswajit on 28-11-14. 
*/ 
public class TabPageAdapter extends FragmentStatePagerAdapter{ 
Context context; 
public TabPageAdapter(FragmentManager fm,Context context) { 
    super(fm); 
    this.context = context; 
} 

@Override 
public Fragment getItem(int position) { 

    switch (position) { 
     case 0: 
      return new CleannessChartFragment(context); 
     case 1: 
      return new ProductDisplayChartFragment(context); 
     case 2: 
      return new HygieneChartFragment(context); 
     case 3: 
      return new AsmVisitsChartFragment(context); 
    } 

    return null; 
} 

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

} 

希望這有助於其他。謝謝:)