2011-08-10 11 views
9

Zasadniczo mam TextView w układzie, którego używam dla PopupWindow. Pokazuję tę PopupWindow, gdy użytkownik kliknie przycisk; Chcę móc dynamicznie zmieniać tekst w PopupWindow po kliknięciu przycisku. Jednak findViewById (my_textview) .setText() nie wydaje się nic robić, a nawet powoduje, że okno PopupWindow nie jest już wyświetlane po kliknięciu przycisku.Android: setText() dla TextView w PopupWindow nie działa

Mogę ustawić tekst z układu xml dobrze.

Ktoś wie, co z tym jest? Thanks-

+1

Czy możesz odpowiedzieć jako odpowiedź i zaakceptować? W ten sposób inne osoby mogą łatwiej znaleźć rozwiązanie, jeśli mają to samo pytanie i utrzymują listę pytań bez odpowiedzi w czystości. Dzięki! – Jeroen

Odpowiedz

15

I rozwiązać problem. Z jakiegoś powodu musisz wywołać popup.getContentView(). FindViewById zamiast tylko findViewById (gdzie popup jest twoim obiektem PopupWindow). Nie otrzymałem wcześniej NullPointerException, więc nie jestem do końca pewien, dlaczego to rozwiązało problem, ale tak się stało.

Więc kod wygląda mniej więcej tak:

PopupWindow pw = new PopupWindow (układ i params tutaj);

((TextView) pw.getContentView(). FindViewById (R.id.my_textview)). SetText ("hello there");

pw.showAtLocation (twoje parametry tutaj);

+0

Uratowałeś mi mnóstwo czasu, dziękuję szczerze! –

0

Będziesz mógł znaleźć widoki z „findViewById” tylko przy użyciu widoku ty zawyżone popupWindow przed

jak ten

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); 
//... 
Powiązane problemy