查看只有一页的寻呼机:
这是 2021 年 - 2 月,Alhamdulillah,我只能使用 viewPager 添加一页。该方法是使用 : ViewPager
、FragmentPagerAdapter
、Tablayout
和 a fragment
。就我而言,我可以用 many 填充 many Pages
,tabs
或者只Page
用 one填充Tab
。当一个标签页和一个页面向左或向右滑动时,我可以设法更改文档的章节(我接下来要显示)。当有很多页面和很多标签时,我可以更改整本书的文档。
在主要的 Activity Oncreate 中:(这是我的工作代码方法,我的工作代码没有改变任何内容):
if(getIntent()!=null){
if(getIntent().getStringExtra("ONLY_TAFHEEM")!=null)
sectionsPagerAdapter = new SectionsPagerAdapter(this, getSupportFragmentManager(), suraName, suraId, ayatId, true);
else
sectionsPagerAdapter = new SectionsPagerAdapter(this, getSupportFragmentManager(), suraName, suraId, ayatId, false);
}else {
sectionsPagerAdapter = new SectionsPagerAdapter(this, getSupportFragmentManager(), suraName, suraId, ayatId, false);
}
final ViewPager viewPager = findViewById(R.id.view_pager);
viewPager.setAdapter(sectionsPagerAdapter);
tabsLayout = findViewById(R.id.tabs);
tabsLayout.animate();
tabsLayout.setupWithViewPager(viewPager);
在适配器中:
@NonNull
@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.sendData(mContext, postion, suraName, suraId, ayahId, ARABIC_AYAH, BENGALI_AYAH, actualDbNames[position], tafsirDisplayNames[position]);
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return tafsirDisplayNames[position];
}
@Override
public int getCount() {
// this is the tricky part // Show pages according to array length. // this may only one // this is the tricky part :
return tafsirDisplayNames.length;
}
最后是片段公共构造函数:
public static PlaceholderFragment sendData(Context mContext, int tabIndex, String suraName, String suraId, String ayahNumber, String arabicAyah, String bengaliAyah, String actualDbName, String displayDbName) {
Log.i("PlaceHolder", "Tafhim sendData: " + bengaliAyah);
PlaceholderFragment fragment = new PlaceholderFragment();
Bundle bundle = new Bundle();
mContext_ = mContext;
BENGALI_AYAH = bengaliAyah;
_DISPLAY_DB_NAME = displayDbName;
bundle.putInt(ARG_SECTION_NUMBER, tabIndex);
bundle.putString(SURA_NAME, suraName);
bundle.putString(SURA_ID, suraId);
bundle.putString(AYAH_NUMBER, ayahNumber);
bundle.putString(ARABIC_AYAH, arabicAyah);
bundle.putString(ACTUAL_DB_NAME, actualDbName);
bundle.putString(DISPLAY_DB_NAME, displayDbName);
fragment.setArguments(bundle);
return fragment;
}
就是这样,只需将数组(标签标签)传递给适配器,(它可能只有一个元素,以防万一,一页),根据我的需要,我可以填充一页或多页,并据此填充一个选项卡或多个选项卡:在上面的代码中,数组是:tafsirDisplayNames
。我也可以在适配器中手动创建数组,当适配器第一次调用时,或者,在重新创建 MainActivity 时使用 +-elements 重新创建数组。
就是这样,所有,Alhamdulillah,快乐编码.......