2017-10-12 86 views
-1

當需要從子片段中單擊按鈕時,需要切換下一個選項卡。如何從子片段中選擇下一個選項卡

這是我的設置選項卡中的父母,

TabAdapter adapter; 

private void setUpTabs(ViewPager viewPager) { 

    adapter = new TabAdapter(getSupportFragmentManager()); 
    adapter.addFragment(new FirstTabFragment(), "First Tab"); 
    adapter.addFragment(new SecondTabFragment(), "Second Tab"); 
    viewPager.setAdapter(adapter); 

} 

而且我TabAdapter類,

public class TabAdapter extends FragmentPagerAdapter { 
    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 

    public TabAdapter(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragmentList.get(position); 
    } 

    @Override 
    public int getCount() { 
     return mFragmentList.size(); 
    } 

    public void addFragment(Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 

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

我如何創建切換選項卡里面父

TabLayout myTabs= (TabLayout) findViewById(R.id.my_tabs); 

Button chkBtn = (Button) findViewById(R.id.check_button); 

chkBtn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     viewPager.setCurrentItem(1); 
    } 
}); 

切換的方法父類中的選項卡正常工作。但我怎麼能在FirstTabFragment裏面做同樣的事,請幫幫我。

回答

1

只是爲了讓你的用戶界面更加互動和好看,我要分享我實現。

只要從片段的java文件訪問您的viewPager,請在您的父級活動中聲明您的viewPager

public static ViewPager viewPager; 

然後在片段按鈕的onClick方法或onClickListener,你可以用這個。

ParentActivity.viewPager.arrowScroll(View.FOCUS_RIGHT); 

這將平滑滾動你的viewpager到第二個片段,是的,如果你想從滾動直接可以禁用viewPager的滾動限制用戶,閱讀here

您也可以重點轉移到左邊,如果用戶想通過剛纔

ParentActivity.viewPager.arrowScroll(View.FOCUS_LEFT); 

回去FirstFragment是的,它的工作,因爲我第一次測試發帖應答之前,我傻。

3

你應該使用setCurrentItem(int item)

設置當前選定的頁面。 `

示例代碼

chkBtn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     viewPager.setCurrentItem(2); 
    } 
}); 
+0

謝謝!它幫助了我。我做了一個編輯問題。可以請你幫忙, – ChyperX

+0

@ user8595331當然你可以解釋更多 –

2

你應該叫

viewPager.setCurrentItem(fragmentIdex);

相關問題