Creare correttamente un frammento in un PopupWindow

Sono nuovo allo sviluppo di Android e sono confuso su come compire quello che sto cercando di fare. Ho fatto qualche lettura e apprendimento di frammenti in modo da poter condividere layout e codice tra vari disegni di size dello schermo. Ho creato un paio di frammenti e li ho usati con successo. Ma ho una situazione in cui voglio mostrare un frammento in un'attività normale sul telefono, ma voglio mostrare il frammento in un PopupWindow (o qualcosa di simile se c'è una scelta migliore) su una tavoletta.

Sono riuscito a capire come gonfiare il frammento e visualizzarlo in un PopupWindow quando si fa clic su un button. Il mio codice ha questo aspetto:

  • Ottieni nuova posizione di coordinate dopo la rotazione con Matrix
  • Il cassetto di navigazione non mostra frammenti
  • Frammento predefinito del cassetto di navigazione
  • Android Gradle Plugin 1.1.0 - getNdkFolder () non è più trovato, qualsiasi sostituzione?
  • come get una chiave di rilascio API v2 di Google Maps
  • Come submit un object da un'attività Android ad un altro utilizzando Intenti?
  • public void onClick(View v) { LayoutInflater inflater = (LayoutInflater) BrowsingActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View popupLayout = inflater.inflate(R.layout.serverconnection_fragment, null, false); connectionListPopup = new PopupWindow(popupLayout, 300, 470, true); connectionListPopup.showAtLocation(BrowsingActivity.this.findViewById(R.id.connectionListImage), Gravity.CENTER, 0, 0); } 

    Viene visualizzato il popup e contiene l'interface utente descritta in serverconnection_fragment.xml. Il problema è che creandolo in questo modo, la class Fragment ServerConnectionFragment.java non viene mai istanziata, quindi non ci sono elementi nell'elenco nel mio UI, nessun ascoltatore sui pulsanti e così via. Sembra che ci sia un modo per inserire la class java, farlo gonfiare il frammento normalmente e associare gli ascoltatori degli events, quindi passare la visualizzazione creata nel constructor di PopupWindow, ma non riesco a capire come. Qualcuno mi può aiutare?

    FYI, sto costruendo questo per Android 2.1 usando il file Android-support-v4.jar per le classi di Fragment.

  • httpget non funziona per la string di query
  • È onResume () chiamato su onActivityResult ()?
  • DialogFragment a schermo integer
  • La cattura di un evento quando il drop down del filatore viene respinto
  • Stile di ClickViewSpan di TextView per lo stato premuto
  • Ottieni la lingua corrente nel dispositivo
  • One Solution collect form web for “Creare correttamente un frammento in un PopupWindow”

    Inflare il layout direttamente non lo farà istanziare il frammento; Android considererebbe solo una semplice coincidenza che sia il frammento che l'attività stanno cercando di fare riferimento allo stesso file di layout.

    Di solito, si utilizza FragmentManager.add (int, Fragment) per aggiungere un frammento a un layout. Tuttavia, l'ID contenitore specificato deve essere parte del layout dell'attivita corrente e questo non è il caso di un PopupWindow . Invece, dovresti aggiungere il frammento al gestore di frammenti senza specificare un contenitore, e poi qualche volta più avanti nel frammento (ad esempio, onStart() ) è ansible visualizzare un PopupWindow. Questo è esattamente come funziona il DialogFragment e dal momento che c'è già un sacco di supporto, vi suggerisco di passare all'utilizzo di un DialogFragment.

    Con il tuo codice frammento, estendi semplicemente DialogFragment anziché il frammento e utilizza DialogFragment.show (FragmentManager, String) per visualizzarlo. È ansible eliminare il bordo predefinito chiamando setStyle(DialogFragment.STYLE_NO_FRAME, getTheme()) nel metodo onCreate . È comunque ansible aggiungere questo frammento a un layout (come si dice, su un telefono che non si desidera che venga mostrato come popup) e functionrà come ti aspetti.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.