2011-08-10 13 views
9

Básicamente, tengo una vista de texto en un diseño que utilizo para una ventana emergente. Muestro este PopupWindow cuando un usuario hace clic en un botón; Quiero poder cambiar dinámicamente el texto en la Ventana emergente al hacer clic en el botón. Sin embargo, findViewById (my_textview) .setText() no parece hacer nada, y de hecho hace que PopupWindow deje de mostrarse cuando hago clic en el botón.Android: setText() para TextView en PopupWindow no funciona

Puedo establecer el texto del formato xml bien.

¿Alguien sabe qué pasa con esto? Acción de Gracias

+1

¿Puedes publicar tu respuesta como respuesta y aceptarla? De esta forma, otras personas pueden encontrar la solución más fácilmente si tienen la misma pregunta y mantiene limpia la lista de preguntas sin responder. ¡Gracias! – Jeroen

Respuesta

15

He resuelto el problema. Por alguna razón, debe llamar a popup.getContentView(). FindViewById en lugar de simplemente findViewById (donde popup es su objeto PopupWindow). No recibía una NullPointerException antes, así que no estoy exactamente seguro de por qué esto solucionó el problema, pero lo hizo.

Así que el código es algo como:

PopupWindow pw = new PopupWindow (su diseño y params aquí);

((TextView) pw.getContentView(). FindViewById (R.id.my_textview)). SetText ("hola allí");

pw.showAtLocation (sus parámetros aquí);

+0

¡Me ahorraste una tonelada de tiempo, gracias sinceramente! –

0

usted será capaz de encontrar los puntos de vista con el "findViewById" sólo con la vista que infla el popupWindow antes

como esto

private View viewPopUp; 
private PopupWindow windowPopUp; 
//... 
//form_popup is the template to the popup 
viewPopUp = mContext.getLayoutInflater().inflate(R.layout.form_popup, null); 
windowPopUp = new PopupWindow(viewPopUp, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, true); 
//... 
viewPopUp.findViewById(R.id.popupTopTitle); 
viewPopUp.findViewById(R.id.popupMiddleMsg); 
//... 
Cuestiones relacionadas