Ich verwende eine TabLayout
+ ViewPager
, um ein paar Registerkarten anzuzeigen. Abhängig von einer Serverantwort möchte ich zwei mögliche Szenarien erstellen: In der ersten gibt es drei Registerkarten und in der zweiten gibt es nur zwei, die Registerkarte in Position 0 "entfernen".Umgang mit TabLayout mit mehreren Szenarien
Da bin ich "Entfernen" Auf der ersten Registerkarte werden alle Methoden, die sich auf die Position stützen, um etwas auszuführen, das mit einem bestimmten Fragment zusammenhängt, veraltet und werden wahrscheinlich die Prüfung instanceof
nicht bestehen.
Zum Beispiel ist dies getItem
in FragmentStatePagerAdapter
, das ist nicht das zweite Szenario im Moment nicht verarbeitet:
@Override
public Fragment getItem(int position) {
AbstractFragment fragment;
switch (position) {
case 0:
fragment = new MainFragment();
break;
case 1:
fragment = new MessagesFragment();
break;
case 2:
fragment = new SearchFragment();
break;
default:
return null;
}
return fragment;
}
Listener Beispiel in MainActivity
(Check fehl im zweiten Szenario):
Fragment fragment = viewPagerAdapter.getRegisteredFragment(2);
if (fragment instanceof SearchFragment) {
((SearchFragment)fragment).doStuff();
}
Meine einzige Idee ist es, die Server-Antwort (dh wenn es zwei oder drei Registerkarten gibt) in jedem Listener in MainActivity
und in jedem Fall in getItem
, die eine schreckliche s ist zu überprüfen Lösung meiner Meinung nach. Gibt es einen besseren Weg, damit umzugehen?
@NeriaNachum hat dies Ihr Problem gelöst? Wenn ja, bitte akzeptieren Sie die Antwort –