Ich habe eine Sherlock-Fragment-Aktivität, aus der ich die verschiedenen Sherlock-Fragmente mit dem Fragment-Pager-Adapter setze.
Nun um die Suche in jedem der Fragmente anzuzeigen, habe ich diese Methode in onCreate of Fragment ::
platziertDiese Methode zeigt Menüelemente in der ActionBar des Fragments an.
%Vor%Ich habe jetzt auch onCreateOptionMenu () wie folgt ::
gesetzt %Vor%Nun passieren die seltsamen Dinge, dass ich in meinem ersten Fragment dasselbe getan habe und die Suche erfolgreich geöffnet wurde.
Wenn
Gleiches passiert für das dritte Fragment
Aber wenn ich direkt auf das zweite Fragment gehe, wird die Suche nicht geöffnet.
Hoffe ich bin klar.
Irgendwelche Hinweise? Jeder Vorschlag / Links wird geschätzt ..
Vielen Dank im Voraus ...
BEARBEITEN ::
menu.xml
%Vor%Logcat ::
%Vor%Ich habe endlich erreicht, was ich will, aber mit einem Problem .. Ich weiß nicht, was ich getan habe, ist der Hack / Patch oder der richtige Weg, aber es funktioniert gut in & lt; 3.0, aber jetzt finde das Problem in & gt; = 3.0.
Was ich getan habe, ist ::
In meiner Container-Aktivität habe ich die onCreateOptionsMenu () und onPrepareOptionsMenu () ::
deklariert %Vor% Jetzt habe ich in jedem onCreateOptionsMenu () eines Fragments so etwas wie ::
gemacht
Ich habe die Build-Version von OS überprüft und darauf aufbauend mein Optionsmenü wie unten beschrieben.
Es funktioniert gut in 2.3.3, aber das Problem m steht jetzt in 3.0 +
1) kann den Hinweis nach dem Erweitern der Suchansicht nicht sehen 2) Erweitern Sie die Suchansicht im ersten Fragment ...
3) Zum zweiten Fragment wechseln (ohne die Suchansicht zu kollabieren)
4) Erweitern Sie nun im zweiten Fragment die Suchansicht des aktuellen Fragments
5) in Current Fragment Press Back Das Ergebnis ist chaotisch: (
BEARBEITEN ::
Ich habe die folgenden Änderungen an meiner Container-Aktivität vorgenommen und jetzt funktioniert es gut. Endlich habe ich erreicht, was ich will ....
%Vor% Im Allgemeinen verwenden wir onCreateOptionsMenu()
zum Erstellen des Optionsmenüs für Fragmente und Aktivitäten.
Wenn Sie die Dokumentation durchgehen, gibt es eine weitere Hilfsmethode namens onPrepareOptionsMenu()
, die gemäß der Dokumentation besagt:
Bereiten Sie das Standardoptionsmenü des Bildschirms zur Anzeige vor. Das ist aufgerufen, bevor das Menü angezeigt wird, jedes Mal, wenn es angezeigt wird. Sie können Verwenden Sie diese Methode, um Elemente effizient zu aktivieren oder zu deaktivieren dynamisch den Inhalt ändern.
SearchView
expanding / collapsing funktioniert gut, wenn wir keine Fragmente in ViewPager
oder ähnliche Tabs wie das Wechseln von Szenarien instanziieren. Ich hatte einmal das gleiche Problem.
Ich kam mit onPrepareOptionsMenu()
, um mein Problem zu lösen.
Implementieren Sie einfach onPrepareOptionsMenu()
in jedem Ihrer Fragmente, und rufen Sie onQueryTextChange("")
in% auf, indem Sie ""
als Abfragezeichenfolge übergeben. Es wird den Trick machen, die Fragmentcontainer-Aktivität vorzuschlagen, dass dieses Fragment seine eigene Suchoperation beachten möchte.
ODER, nicht sicher, aber ein Aufruf von invalidateOptionsMenu()
für die Containeraktivität könnte ebenfalls nützlich sein.
Lass es mich wissen, wenn das hilft.
BEARBEITEN:
Meine Implementierung:
%Vor%Tags und Links android searchview actionbarsherlock fragment