Aktionsleiste Sherlock SearchView expandiert nicht bei einem Klick darauf

9

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 ::

platziert

Diese 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

  • Ich gehe zum ersten Fragment, öffne die Suchansicht und gehe dann zum zweiten
  • Fragment die Suchansicht wird geöffnet.

Gleiches passiert für das dritte Fragment

  • gehe zum 3. Fragment,
  • Suchansicht öffnen,
  • zurück zum zweiten Quartal, Suchansicht wird geöffnet.

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%     
AndroidLearner 06.12.2013, 09:11
quelle

2 Antworten

0

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.

%Vor%

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%     
AndroidLearner 17.12.2013, 07:38
quelle
2

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%     
Puru Pawar 06.12.2013 09:34
quelle