Spielen mit Fragmenten in onTabSelected
Ihr lieben,
Suchte ich für dieses Problem für mehr als einen Tag, aber mit kein Glück.
Implementiere ich genau den code hier gepostet:
Hinzufügen Von Navigations-Tabs
Mein code für onTabSelected Aussehen:
public void onTabSelected(Tab tab, FragmentTransaction ft) {
//Check if the fragment is already initialized
if (mFragment == null) {
//If not, instantiate and add it to the activity
mFragment = Fragment.instantiate(mActivity, mClass.getName());
ft.add(R.id.alert_fragment_container, mFragment, mTag);
} else {
//If it exists, simply attach it in order to show it
ft.attach(mFragment);
}
//prepare adapter for ExpandableListView
Log.i("After Adapter Created", "Passed");
final ExpandableListAdapter expListAdapter = new AlertsAdapter(
mActivity, myAlerts, violations);
Log.i("After Adapter Initialized", "Passed");
((MyCustomFragment)mFragment).violations.setAdapter(expListAdapter);
}
Der code funktioniert Prima, bis letzten Zeile, wo ich den adapter für die öffentliche statische Liste initialisiert, in MyCustomFragment
im onCreateView
hier mein code für das fragment:
public class MyCustomFragment extends Fragment {
public MyCustomFragment() {
}
public static ExpandableListView violations;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_alerts_poi, container, false);
violations = (ExpandableListView) rootView.findViewById(R.id.POIAlertList);
Log.i("onCreateView POI", "Called");
return rootView;
}
}
Es gibt Null-pointer-Fehler. Mit meinem debugging-logs, merke ich, dass dieses Protokoll Log.i("onCreateView POI", "Called");
erscheint nach dieser Log.i("After Adapter Initialized", "Passed");
. Dies bedeutet, dass ich versuche, legen Sie die adapter für ein fragment ist nicht initialisiert, noch nicht.
Dies ist genau das problem ich bin Gesicht, ich muss die fed ExpandableListView
mit Daten basierend auf der Registerkarte Auswahl in onTabSelected
.
Was ich falsch mache? Was ist die beste Lösung?
Grüße,
Have a look @ this Tablayout.OnTabSelectedListener für die neuesten updates.
InformationsquelleAutor alawibh | 2014-01-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es scheint, dass Sie brauchen eine ViewPager ich nur implementiert, eine Navigations-Reiter paar Tage her, hier ist mein code, es navigiert zwischen 4 Fragmente:
Und hier ist der adapter:
Sie brauchen nicht zu ändern, viele Dinge, die adapter initialisiert wird in der MainActivity, und ich weiß nicht, welche Dosis Ihre Haupttätigkeit Aussehen, so ist es schwer, herauszufinden, was falsch mit Ihrem code in der MainActivity oben, dort ist auch ein onTabSelected () - Methode, ich folgte auch das gleiche tutorial wie du, hoffentlich finden Sie den Fehler durch vergleichen der code oben mit Ihrem ein
Ich meine konvertieren code, um eine neue Aktivität mit
ViewPager
. Es funktioniert gut für die zweite, Dritte und vierte Registerkarte. Die erste, noch geben mir Null-Zeiger. Legte ich den code von der Initialisierung des Adapters inonPageSelected(int position)
vonViewPager
Zuhörer. Ich versuchte, Sie zu zwingen, listener rufenonPageSelected(int position)
für die erste position = 0 mitpageChangeListener.onPageSelected(0);
mit kein Glück.InformationsquelleAutor Zhenxiao Hao
Have a look @ this Tablayout.onTabselected für die neuesten API-updates. ActionBar.TabListener ist eine alte Umsetzung.
InformationsquelleAutor anand krish