我有一個正在運行的帶有導航抽屜活動的 Android 應用程序。對于每個菜單項,我想實現一個單獨的片段,這樣我就可以使用相同的工具欄和抽屜菜單。現在,此片段之一應包含一個帶有 3 個選項卡的視圖(其中有 3 個帶有 Recyclerviews 的片段)。我創建了一個選項卡式活動并將代碼遷移到一個新的片段中。當我第一次使用選項卡片段單擊菜單項時,它工作得很好。但是當我瀏覽菜單然后再次打開選項卡片段時,它顯示了 3 個選項卡,但其中沒有任何內容?,F在,當我單擊第三個選項卡時,將顯示數據。當我切換回第一個選項卡時,數據也回來了。只有中間的選項卡保持空白。我在一個全新的空項目上嘗試了這種方法,只有一個導航抽屜活動和一個選項卡式活動,我還將代碼遷移到了一個片段。我只使用了 Android-Studio (3.4.2) 生成的代碼。在這些選項卡中只有文本視圖,但仍然存在相同的問題。選項卡片段(從生成的選項卡式活動遷移的代碼): public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { v = inflater.inflate(R.layout.activity_tab, container, false); context = getActivity().getApplicationContext(); SectionsPagerAdapter sectionsPagerAdapter = new SectionsPagerAdapter(context, getActivity().getSupportFragmentManager()); ViewPager viewPager = v.findViewById(R.id.view_pager); viewPager.setAdapter(sectionsPagerAdapter); TabLayout tabs = v.findViewById(R.id.tabs); tabs.setupWithViewPager(viewPager); return v; }生成的SectionsPagerAdapter:public class SectionsPagerAdapter extends FragmentPagerAdapter { @StringRes private static final int[] TAB_TITLES = new int[]{R.string.tab_text_1, R.string.tab_text_2}; private final Context mContext; public SectionsPagerAdapter(Context context, FragmentManager fm) { super(fm); mContext = context; } @Override public Fragment getItem(int position) { // getItem is called to instantiate the fragment for the given page. // Return a PlaceholderFragment (defined as a static inner class below). return PlaceholderFragment.newInstance(position + 1); } @Nullable @Override public CharSequence getPageTitle(int position) { return "Some Title"; } @Override public int getCount() { // Show 3 total pages. return 3; }}我只更改了“getCount”中的制表符數量和“getPageTitle”中返回的字符串是否有可能在菜單項點擊時繼續使用片段,或者我是否必須使用選項卡式活動?
1 回答

鳳凰求蠱
TA貢獻1825條經驗 獲得超4個贊
首先,我認為你應該使用childFragmentManager而不是supportFragmentManager。
SectionsPagerAdapter sectionsPagerAdapter = new SectionsPagerAdapter(context, getChildFragmentManager());
添加回答
舉報
0/150
提交
取消