Ich entwickle gerade eine App, die eine JSON-Datei über Karten in der Hauptaktivität anzeigt. Abhängig davon, welche Registerkarte gerade in meiner Tab-Aktivität ausgewählt ist, entscheidet eine Methode, die die JSON-Datei herunterlädt, welche JSON-Datei heruntergeladen werden soll (ich übergebe eine Ganzzahl und es gibt einen Schalter in der Methode). HierDie aktuell ausgewählte Registerkarte einer Aktivität mit Registerkarten
ist die Methode:
Fragment.Downloadjson(rootview,integer,context);
Nun, für meine Tabbed Aktivität ich einen SectionsPagerAdapter haben, die die üblichen Sachen hat: getItem, getCount und getPageTitle.
In getItem ich meine neue Fragmente erschaffe:
@Override
public Fragment getItem(int position) {
View v1 = getWindow().getDecorView().getRootView();
switch (position) {
case 0:
//Fragment.Download(v1,0,getApplicationContext());
return new Fragment().f(Fragment.page.TODAY);
case 1:
//Fragment.Download(v1,1,getApplicationContext());
return new Fragment().f(Fragment.page.TOMORROW);
default:
return new Fragment();
}
}
Ausnahme:
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
ich die Quelle dieser Fehler gefunden haben die RootView Parameter in meiner Methode zu sein, weil es funktioniert in onCreateView mit rootView
als Parameter, weil ich es dort definieren. Hovewer, kann ich nicht machen eine if-Anweisung für die aktuell ausgewählte Registerkarte oder zur Zeit dort angezeigt Fragment, weil
a) Ich weiß nicht, wie die aktuell ausgewählte Registerkarte
b zu bekommen) bin ich nicht sicher, ob es Download würde die jSON-Datei wieder, nachdem ich die Registerkarte wechseln, denn schließlich würde die If-Anweisung in seine onCreateView
Also, meine Frage ist,
wie löse ich das?
Überprüfen Sie diesen Link für den aktuellen Tab http://StackOverflow.com/Questions/3583405/Get-Index-of-Selected-Tab-in-Tabhost –
@BrahmamYamani Ich habe keine Tabactivity, ich benutze die vorkonstruierte _tabbed activity_ von android studio. Daher kann ich Tabhost nicht verwenden. –