2016-09-09 4 views
0

Я использовал в своем проекте донной навигации. Я хочу, когда вы нажмете на любой из значков ниже, чтобы перейти к новому фрагменту. Мой Благодарю вас за советы здесь! код выглядит следующим образом:Обратитесь за помощью к фрагменту

MainActivity:

public class MainActivity extends AppCompatActivity { 
    private TabLayout mTabLayout; 

    private int[] mTabsIcons = { 
      R.drawable.ic_recents_selector, 
      R.drawable.ic_favorite_selector, 
      R.drawable.ic_place_selector}; 


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

     // Setup the viewPager 
     ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager); 
     MyPagerAdapter pagerAdapter = new MyPagerAdapter(getSupportFragmentManager()); 
     if (viewPager != null) 
      viewPager.setAdapter(pagerAdapter); 

     mTabLayout = (TabLayout) findViewById(R.id.tab_layout); 
     if (mTabLayout != null) { 
      mTabLayout.setupWithViewPager(viewPager); 

      for (int i = 0; i < mTabLayout.getTabCount(); i++) { 
       TabLayout.Tab tab = mTabLayout.getTabAt(i); 
       if (tab != null) 
        tab.setCustomView(pagerAdapter.getTabView(i)); 
      } 

      mTabLayout.getTabAt(0).getCustomView().setSelected(true); 
     } 
    } 


    private class MyPagerAdapter extends FragmentPagerAdapter { 

     public final int PAGE_COUNT = 3; 

     private final String[] mTabsTitle = {"Recents", "Favorites", "Nearby"}; 

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

     public View getTabView(int position) { 
      // Given you have a custom layout in `res/layout/custom_tab.xml` with a TextView and ImageView 
      View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.custom_tab, null); 
      TextView title = (TextView) view.findViewById(R.id.title); 
      title.setText(mTabsTitle[position]); 
      ImageView icon = (ImageView) view.findViewById(R.id.icon); 
      icon.setImageResource(mTabsIcons[position]); 
      return view; 
     } 

     @Override 
     public Fragment getItem(int pos) { 
      switch (pos) { 

       case 0: 
        return PageFragment.newInstance(1); 

       case 1: 
        return PageFragment.newInstance(2); 
       case 2: 
        return PageFragment.newInstance(3); 

      } 
      return null; 
     } 

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

     @Override 
     public CharSequence getPageTitle(int position) { 
      return mTabsTitle[position]; 
     } 
    } 

} 

PageFragment

public class MainActivity extends AppCompatActivity { 
    private TabLayout mTabLayout; 

    private int[] mTabsIcons = { 
      R.drawable.ic_recents_selector, 
      R.drawable.ic_favorite_selector, 
      R.drawable.ic_place_selector}; 


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

     // Setup the viewPager 
     ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager); 
     MyPagerAdapter pagerAdapter = new MyPagerAdapter(getSupportFragmentManager()); 
     if (viewPager != null) 
      viewPager.setAdapter(pagerAdapter); 

     mTabLayout = (TabLayout) findViewById(R.id.tab_layout); 
     if (mTabLayout != null) { 
      mTabLayout.setupWithViewPager(viewPager); 

      for (int i = 0; i < mTabLayout.getTabCount(); i++) { 
       TabLayout.Tab tab = mTabLayout.getTabAt(i); 
       if (tab != null) 
        tab.setCustomView(pagerAdapter.getTabView(i)); 
      } 

      mTabLayout.getTabAt(0).getCustomView().setSelected(true); 
     } 
    } 


    private class MyPagerAdapter extends FragmentPagerAdapter { 

     public final int PAGE_COUNT = 3; 

     private final String[] mTabsTitle = {"Recents", "Favorites", "Nearby"}; 

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

     public View getTabView(int position) { 
      // Given you have a custom layout in `res/layout/custom_tab.xml` with a TextView and ImageView 
      View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.custom_tab, null); 
      TextView title = (TextView) view.findViewById(R.id.title); 
      title.setText(mTabsTitle[position]); 
      ImageView icon = (ImageView) view.findViewById(R.id.icon); 
      icon.setImageResource(mTabsIcons[position]); 
      return view; 
     } 

     @Override 
     public Fragment getItem(int pos) { 
      switch (pos) { 

       case 0: 
        return PageFragment.newInstance(1); 

       case 1: 
        return PageFragment.newInstance(2); 
       case 2: 
        return PageFragment.newInstance(3); 

      } 
      return null; 
     } 

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

     @Override 
     public CharSequence getPageTitle(int position) { 
      return mTabsTitle[position]; 
     } 
    } 

} 

ответ

0

Я не мог понять, что именно ваша проблема была из вашего вопроса, но я думаю, что-то понял, что вы пытаетесь и я просто использую

MainActivity.java

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

    // Set the content of the activity to use the activity_main.xml layout file 
    setContentView(R.layout.activity_main); 

    // Find the view pager that will allow the user to swipe between fragments 
    ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); 

    // Create an adapter that knows which fragment should be shown on each page 
    SimpleFragmentPagerAdapter adapter = new SimpleFragmentPagerAdapter(getSupportFragmentManager()); 
    getSupportActionBar().setElevation(0); 

    // Set the adapter onto the view pager 
    viewPager.setAdapter(adapter); 

    TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs); 
    tabLayout.setupWithViewPager(viewPager); 
} 

SimpleFragmentPagerAdapter.java

public class SimpleFragmentPagerAdapter extends FragmentPagerAdapter { 

    private String tabTitles[] = new String[] { "Numbers", "Family", "Colors","Phrases" }; 


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

    @Override 
    public Fragment getItem(int position) { 
     if (position == 0) { 
      return new NumbersFragment(); 
     } else if (position == 1){ 
      return new FamilyFragment(); 
     } else if (position == 2) { 
      return new ColorsFragment(); 
     }else { 
      return new PhrasesFragment(); 
     } 
    } 

    @Override 
    public int getCount() { 
     return 4; 
    } 
    @Override 
    public CharSequence getPageTitle(int position) { 
     // Generate title based on item position 
     return tabTitles[position]; 
    } 
} 

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
tools:context="com.example.android.miwok.MainActivity"> 

<android.support.design.widget.TabLayout 
    android:id="@+id/sliding_tabs" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/primary_color" 
    app:tabBackground="@color/primary_color" 
    app:tabIndicatorColor="@color/tan_background" 
    app:tabGravity="center" 
    app:tabMode="fixed" 
    app:tabTextColor="#A8A19E" 
    app:tabSelectedTextColor="#FFFFFF" 
    /> 

<android.support.v4.view.ViewPager 
    android:id="@+id/viewpager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

Смежные вопросы