Sono nuovo nello sviluppo di Android e sono confuso su come realizzare ciò che sto cercando di fare. Ho letto e studiato alcuni frammenti in modo da poter condividere layout e codice tra vari progetti di dimensioni 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 una normale attività sul telefono, ma voglio mostrare il frammento in una finestra popup (o qualcosa di simile se c'è una scelta migliore) su un tablet.Creazione corretta di un frammento in una finestra popup
Sono riuscito a capire come gonfiare il frammento e visualizzarlo in un PopupWindow quando si fa clic su un pulsante. Il mio codice è simile al seguente: appare
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);
}
Il pop-up e contiene l'interfaccia utente descritta in serverconnection_fragment.xml. Il problema è che creandolo in questo modo, la classe Fragment ServerConnectionFragment.java non viene mai istanziata quindi non ci sono elementi nell'elenco nella mia interfaccia utente, nessun listener sui pulsanti e così via. Sembra che dovrebbe esserci un modo per me di istanziare la classe java, farla gonfiare normalmente il frammento e allegare i listener di eventi, quindi passare la vista creata lì nel costruttore di PopupWindow, ma non riesco a capire come. Qualcuno mi può aiutare?
FYI, sto costruendo questo per Android 2.1 utilizzando il file Android-support-v4.jar per le classi Fragment.
Sicuramente la risposta corretta, grazie Inoltre, quando stavamo mostrando una lista nel nostro PopupWindow si è rifiutato di mostrare il ContextMenu che avevamo specificato per la lista. Passare a DialogFragment ci ha permesso di risolverlo. –
Potresti, per favore, spiegare o esemplificare la tua ultima frase, se possibile aggiungendo il frammento a una finestra popup, come esempio iniziale? "Puoi ancora aggiungere questo frammento a un layout (come dici tu, su un telefono non lo vuoi per essere mostrato come popup) e funzionerà come ti aspetti. " – JPMagalhaes
@JPMagalhaes, Strong consiglia di non utilizzare il frammento in PopupWindow poiché potrebbe introdurre problemi di perdita di memoria – Jacky