2016-03-28 12 views
1

Ich habe eine Registerkarte Aktivität, wo ich zwei Registerkarten haben, die Registerkarte Position unter dem Layout, ich möchte die Registerkarte Positionen unterhalb der Aktionsleiste wie in Google Play und wenn ich von einem Tab bewegen zu einer anderen Registerkarte, zeigen die Daten von vorherigen Registerkarte, obwohl ich saveEnabled auf false festgelegt. ist hier mein CodeWie Registerkarte Position unter Aktionsleiste

TabHost tabHost = getTabHost(); // The activity TabHost 
    TabHost.TabSpec spec; // Reusable TabSpec for each tab 
    Intent intent; // Reusable Intent for each tab 


    // Do the same for the other tabs 

    intent = new Intent().setClass(this, RunningOrder.class); 
    spec = tabHost.newTabSpec("runningOrder") 
    .setIndicator("Running Order", res.getDrawable(R.drawable.running_order)) 
     .setIndicator("Running Order") 
    .setContent(intent); 
    tabHost.addTab(spec); 


    intent = new Intent().setClass(this, OrderHistoryTab.class); 
    spec = tabHost 
    .newTabSpec("orderHistory") 
    .setIndicator("Order History", 
    res.getDrawable(R.drawable.history_icon)) 
    .setContent(intent); 
    tabHost.addTab(spec); 

    //set tab which one you want open first time 0 or 1 or 2 
    tabHost.setCurrentTab(0); 

Und das ist mein xml Layout

 <?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/white" 
    android:orientation="vertical" > 



    <TabHost 
    android:id="@android:id/tabhost" 
    android:layout_width="fill_parent" 
    android:saveEnabled="false" 
    android:layout_height="fill_parent" 

    > 

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <FrameLayout 
     android:id="@android:id/tabcontent" 
     android:layout_width="fill_parent" 
     android:layout_height="0dip" 
     android:saveEnabled="false" 
     android:layout_weight="1"/> 

    <TabWidget 
     android:id="@android:id/tabs" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="0" 
     android:textAlignment="textStart" 
     android:saveEnabled="false" 
     android:layout_marginBottom="-4dp"/> 

</LinearLayout> 

Antwort

0

für Position Registerkarte machen unter der Aktionsleiste Swap frameLayout und TabWidget Position.

+0

danke es funktioniert !! – puja

+0

und warum in der aktuellen Registerkarte zeigt es die vorherigen Tab-Daten – puja

0

Um Google Play zu erreichen, können Sie TabLayout zusammen mit Viewpager aus der Design-Support-Bibliothek verwenden.

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/coordinatorLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".HomeActivity"> 
    <RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
    <android.support.v7.widget.Toolbar 
     android:id="@+id/hometoolbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/app_action_bar_primary" 
     app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
     app:layout_scrollFlags="scroll|enterAlways" /> 
    <android.support.design.widget.TabLayout 
     android:id="@+id/home_tab_layout" 
     android:layout_width="match_parent" 
     android:layout_height="60dp" 
     android:layout_below="@+id/hometoolbar" 
     android:background="?attr/colorPrimary" 
     app:borderWidth="0dp" 
     app:tabPaddingStart="-1dp" 
     app:tabPaddingEnd="-1dp" 
     app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
     app:tabIndicatorColor="@color/app_color_secondary" 
     app:tabIndicatorHeight="5dp"/> 
    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="fill_parent" 
     android:layout_below="@id/home_tab_layout"/> 
    </RelativeLayout> 
</android.support.design.widget.CoordinatorLayout> 

In Ihrer Aktivität können Sie wie unten kodieren,

TabLayout tabLayout = (TabLayout) findViewById(R.id.home_tab_layout); 
tabLayout.addTab(tabLayout.newTab().setText("Running Order")); 
tabLayout.addTab(tabLayout.newTab().setText("Order History")); 
final ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); 
final PagerAdapter adapter = new PagerAdapter 
     (getSupportFragmentManager(), tabLayout.getTabCount()); 
viewPager.setAdapter(adapter); 

Sie können wie unten Adapter schaffen durch die Erweiterung FragmentStatePagerAdapter,

public class PagerAdapter extends FragmentStatePagerAdapter { 
     int mNumOfTabs; 
     public PagerAdapter(FragmentManager fm, int NumOfTabs) { 
      super(fm); 
      this.mNumOfTabs = NumOfTabs; 
     } 
     @Override 
     public Fragment getItem(int position) { 
      switch (position) { 
       case 0: 
        RunningOrderFragment tab1 = new RunningOrderFragment(); 
        return tab1; 
       case 1: 
        OrderHistoryFragment tab2 = new OrderHistoryFragment(); 
        return tab2; 
       default: 
        return null; 
      } 
     } 
     @Override 
     public int getCount() { 
      return mNumOfTabs; 
     } 
    } 

Hope this Ihnen hilft.

Verwandte Themen