[英]Select third page as default in TabLayout + ViewPager2
我正在嘗試將第三個選項卡設為默認選項,但下面的代碼不起作用:
public class MessagesFragment extends Fragment {
private FragmentsAdapter fragmentsAdapter;
private ViewPager2 viewPager;
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_messages, container, false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
fragmentsAdapter = new FragmentsAdapter(this);
viewPager = view.findViewById(R.id.pager);
viewPager.setAdapter(fragmentsAdapter);
viewPager.setCurrentItem(2);
TabLayout tabLayout = view.findViewById(R.id.tab_layout);
TabLayoutMediator.TabConfigurationStrategy tabConfigurationStrategy = new TabLayoutMediator.TabConfigurationStrategy() {
@Override
public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {
switch (position) {
case FragmentsAdapter.MESSAGES_NEW:
tab.setText(R.string.navMessagesNew);
break;
case FragmentsAdapter.MESSAGES_READ:
tab.setText(R.string.navMessagesRead);
break;
case FragmentsAdapter.SETTINGS:
tab.setText(R.string.navSettings);
break;
default:
throw new IllegalArgumentException("There is no fragment for that position = " + position);
}
}
};
new TabLayoutMediator(tabLayout, viewPager, tabConfigurationStrategy).attach();
}
}
我正在使用 TabLayout 和 ViewPager2。 一直以來,第一個選項卡都是默認的。 誰能建議如何將我的第三個標簽設為默認? 謝謝
我有同樣的問題,看起來viewPager2有問題,如果您在添加附加TabLayoutMediator(使用setCurrentItem)后立即設置選項卡,它有一個奇怪的行為,select選項卡但不更新頁面視圖頁面。
但是,如果您稍后執行此操作,在按鈕中或幾秒鍾后調用方法viewPager.setCurrentItem(2)
工作正常,在可能的情況下,因為我必須知道我必須到哪個選項卡 go 我要求我的 viewModel 告訴我必須顯示標簽,當觀察者不正常時,標簽正在正確更改。
至少對我來說這是可行的,但我可以看到第一個選項卡加載(默認選項卡 0),然后選項卡更改為我選擇的選項卡,因為這對我來說不可行,我改為使用 viewPager(而不是 viewPager2)和像往常一樣將其設置為 tabLayout, tab_layout.setupWithViewPager(view_pager)
。
使用常規 viewPager 可以正常工作。
您的代碼是正確的:
這些都是一樣的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.