サポートTabLayout
の5番目のタブをクリックしたときにDialogFragment
ポップアップを表示すると、5番目のアイテムをクリックしたときにフラグメントまたはタブの位置を置き換えたくありません。それを達成するために私は以下のことをしました。アンドロイドサポートを使用してタブをクリックするとダイアログを表示するTabLayout?
TabViewPagerAdapter adapter = new TabViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(ProfileFragment.create(mProfileId), getString(R.string.profile));
adapter.addFragment(NewsFragment.create(getString(R.string.news_feed)), getString(R.string.news_feed));
adapter.addFragment(AlertFragment.create(mProfileId), getString(R.string.alert));
adapter.addFragment(EventsFragment.create(mProfileId), getString(R.string.events));
//Logic implemented to show an empty fragment
adapter.addFragment(new Fragment(), getString(R.string.more));
アダプタ
public class TabViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public TabViewPagerAdapter(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);
}
}
アンドモアダイアログ
((ViewGroup) mTabLayout.getChildAt(0)).getChildAt(4).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
MoreDialogFragment newFragment = MoreDialogFragment.newInstance();
newFragment.show(ft, "ReserveChooser");
}
});
を示すそして私は、最新のサポートライブラリを更新するまでそれがうまく働いてため。更新後、ダイアログが表示されますが、同時に空のフラグメントを置換/表示するタブ項目、つまり選択したくない5番目のタブが表示されます。コメントはありますか?
からの確認を待っていることはそれが表示されますことを行うには正しい方法です。私の要件を参照してください。 – Stella