Không , EditText.getText()
không bao giờ trả lại null
. Một cách để xác minh điều này là để kiểm tra mã nguồn Android cho EditText.getText()
:
EditText.java show:
public Editable getText() {
return (Editable) super.getText();
}
Kể từ EditText extends TextView
, cuộc gọi đến super.getText()
phải TextView.getText()
. Bây giờ chúng ta chuyển sang TextView.getText()
để xem những gì nó sẽ trả về:
TextView.java show:
public CharSequence getText() {
return mText;
}
Bây giờ chúng ta cần phải biết nếu mText
bao giờ có thể là null.
Đào sâu hơn vào nguồn TextView.java chúng ta thấy rằng mText
được khởi tạo như một chuỗi rỗng trong constructor TextView
:
public TextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
mText = "";
…
}
Khi chúng ta thấy rằng các nhà xây dựng EditText
gọi TextView
constructor:
public EditText(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
chúng tôi có thể an toàn kết luận rằng EditText.getText()
không bao giờ có thể trả lại null
, bởi vì ngay sau khi EditText
được hiểu cted, mText
được gán một giá trị của một chuỗi rỗng.
Tuy nhiên, như StinePike chỉ ra, EditText.getText()
có thể có thể gây ra một NPE nếu EditText của bạn là null
khi nó làm cho các cuộc gọi đến getText()
.
Nguồn
2014-01-10 16:20:32
qua mã của bạn ... – morroko
Chuỗi s = edittext.getText(). ToString(); if (s! = null) trả về true; –
Câu hỏi của tôi là, EditText.getText() có bao giờ trả về null không? @tsp mã của bạn sẽ dẫn đến NPE trong trường hợp đó. – AppleGrew