2011-08-10 115 views
9

Về cơ bản, tôi có một TextView trong bố cục mà tôi sử dụng cho PopupWindow. Tôi hiển thị PopupWindow này khi người dùng nhấp vào nút; Tôi muốn có thể tự động thay đổi văn bản trong PopupWindow khi nhấp vào nút. Tuy nhiên, findViewById (my_textview) .setText() dường như không làm bất cứ điều gì, và thực sự gây ra PopupWindow không còn hiển thị khi tôi nhấp vào nút.Android: setText() cho TextView trong PopupWindow không hoạt động

Tôi có thể đặt văn bản từ tiền phạt xml bố cục.

Bất cứ ai biết chuyện gì xảy ra với điều này? Thanks-

+1

Bạn có thể đăng câu trả lời cho bạn dưới dạng câu trả lời và chấp nhận không? Bằng cách đó, những người khác có thể dễ dàng tìm ra giải pháp nếu họ có cùng một câu hỏi và nó giữ danh sách câu hỏi chưa được trả lời sạch sẽ. Cảm ơn! – Jeroen

Trả lời

15

tôi đã giải quyết được vấn đề. Vì lý do gì bạn cần gọi popup.getContentView(). FindViewById thay vì chỉ findViewById (nơi popup là đối tượng PopupWindow của bạn). Tôi đã không nhận được một NullPointerException trước vì vậy tôi không chính xác chắc chắn lý do tại sao điều này cố định vấn đề nhưng nó đã làm.

Vì vậy, các mã đi một cái gì đó như:

PopupWindow pw = new PopupWindow (bố trí và params của bạn ở đây);

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

pw.showĐịa điểm (thông số của bạn tại đây);

+0

Bạn đã tiết kiệm cho tôi rất nhiều thời gian, cảm ơn bạn chân thành! –

0

Bạn sẽ có thể tìm thấy các quan điểm với "findViewById" chỉ sử dụng giao diện bạn thổi phồng popupWindow trước

như thế này

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); 
//... 
Các vấn đề liên quan