2015-12-14 20 views
3

我想讓我的viewPager支持Rtl,並在最後一個片段上設置當前項目,但是當我在MainActivity.java中編寫此代碼時,我不知道如何才能訪問最後一個片段分段。如何在MainActivity中查找最後一個片段

iViewPager.setCurrentItem(); 

這是我MainActivity.java,我定義viewPager

package com.example.imajid.grid2.activities; 

import android.support.design.widget.NavigationView; 
import android.support.design.widget.TabLayout; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.view.ViewPager; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBar; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.Toast; 

import com.example.imajid.grid2.R; 
import com.example.imajid.grid2.adapters.PagerAdapter; 

import java.util.ArrayList; 

public class MainActivity extends AppCompatActivity { 

    private DrawerLayout mDrawerLayout; 


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


     //----------------------- set toolbar 
     Toolbar iToolbar = (Toolbar) findViewById(R.id.xmlToolbar); 
     setSupportActionBar(iToolbar); 


     //------------------------------ initialize toolbar 
     ActionBar actionBar = getSupportActionBar(); 
     actionBar.setHomeAsUpIndicator(R.drawable.menu); 
     actionBar.setDisplayHomeAsUpEnabled(true); 

     //**************************** find tablayout *****************************// 
     TabLayout iTabLayout = (TabLayout) findViewById(R.id.xmlTabLayout); 
     iTabLayout.addTab(iTabLayout.newTab()); 
     iTabLayout.addTab(iTabLayout.newTab()); 
     iTabLayout.addTab(iTabLayout.newTab()); 

     iTabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

     //******************************* Array list for sending titles *********************************// 

     ArrayList<String> viewPagersTitle = new ArrayList<String>(); 

     viewPagersTitle.add("صفحه اصلی"); 
     viewPagersTitle.add("فیلم"); 
     viewPagersTitle.add("آهنگ"); 

     //******************************* find view pager in xml *****************************// 

     ViewPager iViewPager = (ViewPager) findViewById(R.id.xmlViewPager); 

     //************************************** Rtlizer view pager ************************************ 

     ====>iViewPager.setCurrentItem(); 


     //************************************** find adapter for view pager *******************************// 

     PagerAdapter viewPagerAdapter = new PagerAdapter(getSupportFragmentManager() , iTabLayout.getTabCount() , viewPagersTitle); 

     //************************************ set adapter for view pager *******************************// 
     iViewPager.setAdapter(viewPagerAdapter); 

     //*********************************** setup tablayout to view pager********************************// 
     iTabLayout.setupWithViewPager(iViewPager); 




     mDrawerLayout = (DrawerLayout) findViewById(R.id.xmlDrawerLayoutRoot); 


     //-------------------------------------- find navigation view 
     NavigationView navigationView = (NavigationView)findViewById(R.id.xmlNavigation); 
     navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 
      @Override 
      public boolean onNavigationItemSelected(MenuItem menuItem) { 
       menuItem.setChecked(true); 
       mDrawerLayout.closeDrawers(); 
       Toast.makeText(MainActivity.this , menuItem.getTitle() , Toast.LENGTH_SHORT).show(); 
       return true; 
      } 
     }); 


    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.main_menu, menu); 
     return true; 

    } 


    //onoptionItemSelected 
    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int itemId = item.getItemId(); 
     String btnName = null; 

     switch (itemId){ 
      case android.R.id.home: 
       mDrawerLayout.openDrawer(GravityCompat.START); 
       return true; 

      case R.id.menu_setting: 
       btnName = "Setting"; 
       break; 
      case R.id.menu_compass: 
       btnName = "Compass"; 
       break; 
      case R.id.menu_help: 
       btnName = "Help"; 
       break; 

     } 

     Toast.makeText(MainActivity.this , "You clicked at " + btnName , Toast.LENGTH_SHORT).show(); 
     return true; 
    } 

} 

,這是我的看法尋呼機適配器

package com.example.imajid.grid2.adapters; 

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentStatePagerAdapter; 

import com.example.imajid.grid2.fragments.TabFragment1; 
import com.example.imajid.grid2.fragments.TabFragment2; 
import com.example.imajid.grid2.fragments.TabFragment3; 

import java.util.ArrayList; 

/** 
* Created by imajid on 12/8/2015. 
*/ 
public class PagerAdapter extends FragmentStatePagerAdapter { 

    private ArrayList<String> titles; 
    int numOfTabs; 

    public PagerAdapter(FragmentManager fm , int numOfTabs , ArrayList<String> titles) { 
     super(fm); 
     this.numOfTabs =numOfTabs; 
     this.titles = titles; 
    } 

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

      case 0: 
       TabFragment1 tab1 = new TabFragment1(); 
       return tab1; 
      case 1: 
       TabFragment2 tab2 = new TabFragment2(); 
       return tab2; 
      case 2: 
       TabFragment3 tab3 = new TabFragment3(); 
       return tab3; 
      default: 
       return null; 

     } 
    } 

    @Override 
    public int getCount() { 
     return this.numOfTabs; 
    } 


    @Override 
    public CharSequence getPageTitle(int position) { 
     return titles.get(position); 
    } 
} 

回答

1

你可以改變的代碼::

你的某些部分
@Override 
public Fragment getItem(int position) { 
    switch (position){ 

     case 2://change it from 0 -> max 
      TabFragment1 tab1 = new TabFragment1(); 
      return tab1; 
     case 1: 
      TabFragment2 tab2 = new TabFragment2(); 
      return tab2; 
     case 0: 
      TabFragment3 tab3 = new TabFragment3(); 
      return tab3; 
     default: 
      return null; 

    } 
} 

或者你甚至可以改變片段的名稱太::

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

     case 0: 
      TabFragment3 tab3 = new TabFragment3(); 
      return tab3; 
     case 1: 
      TabFragment2 tab2 = new TabFragment2(); 
      return tab2; 
     case 2: 
      TabFragment1 tab1 = new TabFragment1(); 
      return tab1; 
     default: 
      return null; 

    } 
} 

嘗試了這一點..

+0

感謝您的回答但你的爽快是行不通的,請參閱此主題http://stackoverflow.com/questions/13489723/how-to-reverse-the-direction-of-viewpager-to-left-to-right-order –

0

可以使用

HomeListFragment fragment = 
     (HomeListFragment) getSupportFragmentManager().findFragmentByTag("android:switcher:"+R.id.viewpager+":0"); 
     //"android:switcher:"+R.id.viewpager+":0" returns current fragment 

    if(fragment != null) // could be null if not instantiated yet 
    { 
    if(fragment.getView() != null) 
    { 

     ViewPager.LayoutParams params = (ViewPager.LayoutParams) group.getLayoutParams(); 
     params.setLayoutDirection(0x00000001); 

    } 
    } 

通知,00000001爲RTL常量的值是指here

+0

嗨巴希姆,謝謝你的答案,但我認爲這種方法http://stackoverflow.com/questions/13489723/how-to-reverse-the-direction-of-viewpager-to-left-to-right-order比你更好,你的解決方案,但我不能實現 –

+0

@kianarahimi我不知道,但如果你想設置選項卡3作爲開始,然後簡單地定義ViewPager後添加'viewPager.setCurrentItem(R.layout.tab3);' – payam

+0

mamnoon payam 1月dorost shod –

0

這個解決方案有點棘手但是,這是這個問題的最佳答案

首先,我們需要訪問getCount()PagerAdapter.java

這在mainActivity.java並在onCreate()決定性的PagerAdapter的實例並設置上ViewPager的PagerAdapter後(這很重要寫明後的設置適配器)我們寫:

iViewPager.setCurrentItem(viewPagerAdapter.getCount()); 

所以在我的代碼,MainActivity是這樣的:

package com.example.imajid.grid2.activities; 

import android.support.design.widget.NavigationView; 
import android.support.design.widget.TabLayout; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.view.ViewPager; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBar; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.Toast; 

import com.example.imajid.grid2.R; 
import com.example.imajid.grid2.adapters.PagerAdapter; 

import java.util.ArrayList; 

public class MainActivity extends AppCompatActivity { 

    private DrawerLayout mDrawerLayout; 


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


     //----------------------- set toolbar 
     Toolbar iToolbar = (Toolbar) findViewById(R.id.xmlToolbar); 
     setSupportActionBar(iToolbar); 


     //------------------------------ initialize toolbar 
     ActionBar actionBar = getSupportActionBar(); 
     actionBar.setHomeAsUpIndicator(R.drawable.menu); 
     actionBar.setDisplayHomeAsUpEnabled(true); 

     //**************************** find tablayout *****************************// 
     TabLayout iTabLayout = (TabLayout) findViewById(R.id.xmlTabLayout); 
     iTabLayout.addTab(iTabLayout.newTab()); 
     iTabLayout.addTab(iTabLayout.newTab()); 
     iTabLayout.addTab(iTabLayout.newTab()); 

     iTabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

     //******************************* Array list for sending titles *********************************// 

     ArrayList<String> viewPagersTitle = new ArrayList<String>(); 

     viewPagersTitle.add("صفحه اصلی"); 
     viewPagersTitle.add("فیلم"); 
     viewPagersTitle.add("آهنگ"); 

     //******************************* find view pager in xml *****************************// 

     ViewPager iViewPager = (ViewPager) findViewById(R.id.xmlViewPager); 


     //************************************** Rtlizer view pager ************************************ 


     //************************************** find adapter for view pager *******************************// 

     PagerAdapter viewPagerAdapter = new PagerAdapter(getSupportFragmentManager() , iTabLayout.getTabCount() , viewPagersTitle); 

     //************************************ set adapter for view pager *******************************// 
     iViewPager.setAdapter(viewPagerAdapter); 

     iViewPager.setCurrentItem(viewPagerAdapter.getCount()); 

     //*********************************** setup tablayout to view pager********************************// 
     iTabLayout.setupWithViewPager(iViewPager); 




     mDrawerLayout = (DrawerLayout) findViewById(R.id.xmlDrawerLayoutRoot); 


     //-------------------------------------- find navigation view 
     NavigationView navigationView = (NavigationView)findViewById(R.id.xmlNavigation); 
     navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 
      @Override 
      public boolean onNavigationItemSelected(MenuItem menuItem) { 
       menuItem.setChecked(true); 
       mDrawerLayout.closeDrawers(); 
       Toast.makeText(MainActivity.this , menuItem.getTitle() , Toast.LENGTH_SHORT).show(); 
       return true; 
      } 
     }); 


    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.main_menu, menu); 
     return true; 

    } 


    //onoptionItemSelected 
    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int itemId = item.getItemId(); 
     String btnName = null; 

     switch (itemId){ 
      case android.R.id.home: 
       mDrawerLayout.openDrawer(GravityCompat.START); 
       return true; 

      case R.id.menu_setting: 
       btnName = "Setting"; 
       break; 
      case R.id.menu_compass: 
       btnName = "Compass"; 
       break; 
      case R.id.menu_help: 
       btnName = "Help"; 
       break; 

     } 

     Toast.makeText(MainActivity.this , "You clicked at " + btnName , Toast.LENGTH_SHORT).show(); 
     return true; 
    } 

} 
相關問題