10

Nella nostra app, abbiamo alcuni frammenti che possono essere mostrati come frammenti a schermo intero o come frammenti di dialogo. Questi frammenti ereditano da DialogFragment e ci assicuriamo di istanziarli correttamente in base alla modalità in cui l'app viene eseguita (a schermo intero o finestra di dialogo).Barra degli strumenti in DialogFragment

Abbiamo pensato di aggiungere alcune funzionalità extra ad alcuni di questi frammenti di dialogo dopo che le ultime modifiche nel widget Toolbar sono state introdotte nella libreria di supporto con Lollipop. L'idea è di avere il tipo di menu di opzioni che avremmo normalmente in un frammento ordinario (cioè il menu delle opzioni gonfiato dopo che onCreateOptionsMenu è stato eseguito) presente nelle sottoclassi di DialogFragment SOLO quando queste sono visualizzate come finestre di dialogo. In breve: quando i frammenti vengono mostrati in modalità a schermo intero, gonfiamo un menu di opzioni tradizionali e quando i frammenti sono mostrati come finestre di dialogo vorremmo avere lo stesso menu di opzioni gonfiato ma usando il nuovo widget di toolbar in modalità standalone.

Ho seguito i passaggi da http://android-developers.blogspot.dk/2014/10/appcompat-v21-material-design-for-pre.html e sono riuscito a "attivare" la barra degli strumenti, ma sembra che il menu non sia gonfiato - vedere schermate allegate (immagine un frammento in modalità schermo intero e immagine due in modalità finestra di dialogo).

È persino possibile gonfiare un menu di opzioni con la nuova barra degli strumenti in un DialogFragment?

fullscreen modedialog mode

+1

Toolbar non è supponiamo di essere in una finestra, si è supponiamo di essere parte di te r layout delle attività. questa è un'interfaccia molto confusionaria che vuoi avere – tyczj

risposta

20

e 'anche possibile per gonfiare una delle opzioni menu con la nuova barra degli strumenti in a DialogFragment?

prima di tutto il disegno è si suppone ok e barra degli strumenti da utilizzare in ogni dove consente di avere uno sguardo a questo da Chris Banes google ingegnere link:

// 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); 

e anche sviluppatore Android barra degli strumenti stand-alone campione:

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

+0

Grazie.Ero al 100% positivo che si potesse fare, come dimostra l'immagine di Chris Banes allegata al suo post. Ho trovato il mio errore dopo aver letto il suo post per la quinta volta :-) –

+0

Informazioni sull'app (che si trova qui: https://play.google.com/store/apps/details?id=com.google.samples.apps .iosched), ecco uno screenshot: https://lh3.googleusercontent.com/Xwh9uUA-TvDYAFtadcPrR578GJGxbZu5Z2KuUv5U0v3QqzvQzpHR9nuDMUhMsPgVbS8=h900 –

4

Sì, DialogFragment ha setHasOptions function(). Definire la barra degli strumenti nel layout della finestra di dialogo e utilizzarla come se si trattasse di un'attività. Una mente barra degli strumenti doesnt di essere in un'attività o un frammento o di un frammento di dialogo .......

Assicurarsi di utilizzare

setHasOptionsMenu(true) in onActivityCreated method.... 

Poi, come al solito di override

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

e

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

Come posso usare una 'Barra degli strumenti' in modalità standalone se non lo leggo e non gonfio un menu? La tua soluzione sostituisce semplicemente il menu delle opzioni predefinito specificato nell'attività dell'host. Non fa in modo che un frammento di una finestra di dialogo abbia una barra degli strumenti –

+0

che fa ... Ho usato la stessa cosa usando setActionBar (myToolbar) –

+0

Questo non funziona. Invece gestisce la barra degli strumenti dell'attività stessa. –

Problemi correlati