10

In unserer App haben wir ein paar Fragmente, die entweder als Vollbildfragmente oder als Dialogfragmente angezeigt werden können. Diese Fragmente erben von DialogFragment und wir stellen sicher, dass sie korrekt instanziiert werden, je nachdem in welchem ​​Modus die App ausgeführt wird (entweder Vollbild oder Dialog).Symbolleiste in DialogFragment

Wir haben darüber nachgedacht, einigen dieser Dialogfragmente einige zusätzliche Funktionen hinzuzufügen, nachdem die letzten Änderungen im Widget Toolbar in der Support-Bibliothek mit Lollipop eingeführt wurden. Die Idee besteht darin, den Typ des Optionsmenüs, den wir normalerweise in einem gewöhnlichen Fragment haben würden (d. H. Das nach onCreateOptionsMenu aufgeblähte Optionsmenü), nur dann in unseren Unterklassen von DialogFragment zu haben, wenn diese als Dialoge visualisiert werden. Kurz gesagt: Wenn die Fragmente im Vollbildmodus angezeigt werden, blähen wir ein herkömmliches Optionsmenü auf, und wenn die Fragmente als Dialoge angezeigt werden, möchten wir das gleiche Optionsmenü aufgeblasen haben, aber das neue Toolbar-Widget im Standalone-Modus verwenden.

Ich folgte den Schritten von http://android-developers.blogspot.dk/2014/10/appcompat-v21-material-design-for-pre.html und ich schaffte es, die Symbolleiste zu "aktivieren", aber es scheint, das Menü ist nicht aufgeblasen - siehe beigefügten Screenshots (Bild ein Fragment im Vollbildmodus und Bild zwei im Dialogmodus).

Ist es sogar möglich, ein Optionsmenü mit der neuen Symbolleiste in einem DialogFragment aufzublasen?

fullscreen modedialog mode

+1

Toolbar ist wohl nicht in einem Dialog zu sein, wird es angenommen, ein Teil von Ihnen zu sein r Aktivitäten Layout. das ist eine sehr verwirrende Schnittstelle, die Sie haben möchten – tyczj

Antwort

20

Ist es überhaupt möglich, eine Optionen aufzublasen Menü mit der neuen Symbolleiste in ein DialogFragment?

vor allem Ihr Design ist ok und die Symbolleiste soll jeder verwendet werden, wo dies aus Chris Banes Google-Ingenieur link haben einen Blick lässt:

// Set an OnMenuItemClickListener to handle menu item clicks 
toolbar.setOnMenuItemClickListener(
     new Toolbar.OnMenuItemClickListener() { 
      @Override 
      public boolean onMenuItemClick(MenuItem item) { 
       // Handle the menu item 
       return true; 
      } 
}); 

// Inflate a menu to be displayed in the toolbar 
toolbar.inflateMenu(R.menu.your_toolbar_menu); 

und auch Android Developer Toolbar Standalone Beispiel:

http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html

+0

Danke.Ich war zu 100% überzeugt, dass es getan werden könnte, wie das Foto, das Chris Banes seinem Posten beilegte, beweist. Ich habe meinen Fehler nach dem Lesen seines Beitrags zum 5. Mal gefunden :-) –

+0

Über die App (die hier gefunden wird: https://play.google.xsamples.apps. Http://play.google.com/store/apps/details?id=com.google.samples.apps .ioced), hier ist ein Screenshot: https://lh3.googleusercontent.com/Xwh9uUA-TvDYAFTadcPrR578GJGxbZu5Z2KuUv5U0v3QqzvQzpHR9nuDMUhMsPgVbS8=h900 –

4

Ja, hat DialogFragment setHasOptions() Funktion. Definieren Sie die Symbolleiste im Layout Ihres Dialogs und verwenden Sie sie wie in einer Aktivität. Eine Symbolleiste doesnt Geist in einer Aktivität oder ein Fragment oder ein Dialogfragment sein .......

sicher sein, dass Sie

setHasOptionsMenu(true) in onActivityCreated method.... 

Verwenden Sie dann, wie üblich überschreiben

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater); 
    inflater.inflate(R.menu.my_menu, menu); 
} 

und

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    return super.onOptionsItemSelected(item); 
} 
+0

Wie kann ich eine 'Toolbar' im Standalone-Modus verwenden, wenn ich sie nicht verdrahte und ein Menü aufbläst? Ihre Lösung überschreibt einfach das Standardoptionenmenü, das in der Hostaktivität angegeben ist. Es macht nicht ein Dialog-Fragment haben eine Symbolleiste –

+0

es machen .... Ich habe das gleiche mit setActionBar (myToolbar) verwendet –

+0

Dies funktioniert nicht. Stattdessen behandelt es die Symbolleiste der Aktivität selbst. –