2017-03-18 59 views
0

我想將選項卡式活動顯示爲一個片段,現在我沒有編寫標籤了,有沒有人可以檢查代碼並糾正我,因爲過去幾天我看到了這段代碼工作沒有得到標籤式佈局

this is the result i am getting

這是我家的XML代碼

<?xml version="1.0" encoding="utf-8"?> 
<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/main_content" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" 
tools:context="com.hackerinside.jaisonjoseph.testapp.MainActivity"> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/AppTheme.AppBarOverlay"> 


    <android.support.design.widget.TabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

</android.support.design.widget.AppBarLayout> 

<android.support.v4.view.ViewPager 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="end|bottom" 
    android:layout_margin="@dimen/fab_margin" 
    app:srcCompat="@android:drawable/ic_dialog_email" /> 

    </android.support.design.widget.CoordinatorLayout> 

這是Java代碼,我想編輯,使其正確

package com.hackerinside.jaisonjoseph.testapp; 


import android.os.Bundle; 
import android.support.design.widget.TabLayout; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 


/** 
    * A simple {@link Fragment} subclass. 
*/ 
public class test extends Fragment { 




public SectionsPagerAdapter mSectionsPagerAdapter; 
public ViewPager mViewPager; 



public test() { 


} 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 


    View rootView = inflater.inflate(R.layout.fragment_test, null); 
    mSectionsPagerAdapter = new SectionsPagerAdapter (getFragmentManager()); 
    mViewPager = (ViewPager) rootView.findViewById(R.id.container); 
    mViewPager.setAdapter(mSectionsPagerAdapter); 
    TabLayout tabLayout = (TabLayout) rootView.findViewById(R.id.tabs); 
    tabLayout.setupWithViewPager(mViewPager); 





    return inflater.inflate(R.layout.fragment_test, container, false); 



} 



public class SectionsPagerAdapter extends FragmentPagerAdapter { 

    private SectionsPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 


     switch (position) 
     { 
      case 0: 

       tab1 tab1=new tab1(); 

       return tab1; 
      case 1: 

       tab2 tab2=new tab2(); 

       return tab2; 


      default:return null; 
     } 



    } 

    @Override 
    public int getCount() { 
     // Show 3 total pages. 
     return 2; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     switch (position) { 
      case 0: 
       return "SECTION 1"; 
      case 1: 
       return "SECTION 2"; 

     } 
     return null; 
    } 
} 


} 

這裏是SectionsPagerAdapter

package com.hackerinside.jaisonjoseph.testapp; 

import android.support.v4.app.FragmentManager; 
import android.support.v4.view.PagerAdapter; 
import android.view.View; 

/** 
* Created by Jaison Joseph on 18-03-2017. 
*/ 

class SectionsPagerAdapter extends PagerAdapter { 
public SectionsPagerAdapter(FragmentManager fragmentManager) { 

} 

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

@Override 
public boolean isViewFromObject(View view, Object object) { 
    return false; 
} 
} 

請幫我

after adding the answer

+0

你想添加TabLayout每個片段? –

+0

是的,不是每個片段,只在一個片段 –

+0

在你上面的代碼中,我看到兩個'SectionsPagerAdapter'類。他們是什麼? –

回答

1

你忘了添加的選項卡中Tablayout,並在年底返回rootview

,而不是return inflater.inflate(R.layout.fragment_test, container, false);

改變你onCreateView()到:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 


    View rootView = inflater.inflate(R.layout.fragment_test, container, false); 
    mSectionsPagerAdapter = new SectionsPagerAdapter (getFragmentManager()); 
    mViewPager = (ViewPager) rootView.findViewById(R.id.container); 
    mViewPager.setAdapter(mSectionsPagerAdapter); 
    TabLayout tabLayout = (TabLayout) rootView.findViewById(R.id.tabs); 
    //Adding the tabs using addTab() method 
    tabLayout.addTab(tabLayout.newTab().setText("Tab Title 1")); 
    tabLayout.addTab(tabLayout.newTab().setText("Tab Title 2")); 
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 
    tabLayout.setupWithViewPager(mViewPager); 
    return rootView; 

} 

編輯

對於抽屜式導航選項卡式活動:在活動

public class MainActivity extends AppCompatActivity{ 
    DrawerLayout mDrawerLayout; 
    NavigationView mNavigationView; 
    FragmentManager mFragmentManager; 
    FragmentTransaction mFragmentTransaction; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     /** 
     *Setup the DrawerLayout and NavigationView 
     */ 

      mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout); 
      mNavigationView = (NavigationView) findViewById(R.id.shitstuff) ; 

     /** 
     * Lets inflate the very first fragment 
     * Here , we are inflating the TabFragment as the first Fragment 
     */ 

      mFragmentManager = getSupportFragmentManager(); 
      mFragmentTransaction = mFragmentManager.beginTransaction(); 
      mFragmentTransaction.replace(R.id.containerView,new TabFragment()).commit(); 
     /** 
     * Setup click events on the Navigation View Items. 
     */ 

      mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 
      @Override 
      public boolean onNavigationItemSelected(MenuItem menuItem) { 
       mDrawerLayout.closeDrawers(); 



       if (menuItem.getItemId() == R.id.nav_item_sent) { 
        FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction(); 
        fragmentTransaction.replace(R.id.containerView,new SentFragment()).commit(); 

       } 

       if (menuItem.getItemId() == R.id.nav_item_inbox) { 
        FragmentTransaction xfragmentTransaction = mFragmentManager.beginTransaction(); 
        xfragmentTransaction.replace(R.id.containerView,new TabFragment()).commit(); 
       } 

       return false; 
      } 

     }); 

     /** 
     * Setup Drawer Toggle of the Toolbar 
     */ 

       android.support.v7.widget.Toolbar toolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.toolbar); 
       ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this,mDrawerLayout, toolbar,R.string.app_name, 
       R.string.app_name); 

       mDrawerLayout.setDrawerListener(mDrawerToggle); 

       mDrawerToggle.syncState(); 

    } 
} 

對於TabFragment:

public class TabFragment extends Fragment { 

    public static TabLayout tabLayout; 
    public static ViewPager viewPager; 
    public static int int_items = 3 ; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     /** 
     *Inflate tab_layout and setup Views. 
     */ 
      View x = inflater.inflate(R.layout.tab_layout,null); 
      tabLayout = (TabLayout) x.findViewById(R.id.tabs); 
      viewPager = (ViewPager) x.findViewById(R.id.viewpager); 

     /** 
     *Set an Apater for the View Pager 
     */ 
     viewPager.setAdapter(new MyAdapter(getChildFragmentManager())); 

     /** 
     * Now , this is a workaround , 
     * The setupWithViewPager dose't works without the runnable . 
     * Maybe a Support Library Bug . 
     */ 

     tabLayout.post(new Runnable() { 
      @Override 
      public void run() { 
        tabLayout.setupWithViewPager(viewPager); 
        } 
     }); 

     return x; 

    } 

    class MyAdapter extends FragmentPagerAdapter{ 

     public MyAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     /** 
     * Return fragment with respect to Position . 
     */ 

     @Override 
     public Fragment getItem(int position) 
     { 
      switch (position){ 
       case 0 : return new PrimaryFragment(); 
       case 1 : return new SocialFragment(); 
       case 2 : return new UpdatesFragment(); 
      } 
     return null; 
     } 

     @Override 
     public int getCount() { 

      return int_items; 

     } 

     /** 
     * This method returns the title of the tab according to the position. 
     */ 

     @Override 
     public CharSequence getPageTitle(int position) { 

      switch (position){ 
       case 0 : 
        return "Primary"; 
       case 1 : 
        return "Social"; 
       case 2 : 
        return "Updates"; 
      } 
       return null; 
     } 
    } 

} 

下面是詳細Implementation

+0

return rootview;是給錯誤 –

+0

我明白了,它的外表奇怪 –

+0

我將添加截圖看我的問題 –