Có Activity
của bạn thực hiện OnFocusChangeListener()
nếu bạn muốn có một sử dụng factorized của giao diện này, dụ:
public class Shops extends AppCompatActivity implements View.OnFocusChangeListener{
Trong bạn OnCreate
bạn có thể thêm một người biết lắng nghe ví dụ:
editTextReaserch.setOnFocusChangeListener(this);
editTextMyWords.setOnFocusChangeListener(this);
editTextPhone.setOnFocusChangeListener(this);
sau đó android studio sẽ nhắc bạn thêm phương thức từ giao diện, chấp nhận nó ... i t sẽ như thế nào:
@Override
public void onFocusChange(View v, boolean hasFocus) {
// todo your code here...
}
và như bạn đã có một mã factorized, bạn sẽ chỉ phải làm điều đó:
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
editTextReaserch.setText("");
editTextMyWords.setText("");
editTextPhone.setText("");
}
if (!hasFocus){
editTextReaserch.setText("BlaBlaBla");
editTextMyWords.setText(" One Two Tree!");
editTextPhone.setText("\"your phone here:\"");
}
}
bất cứ điều gì bạn mã trong !hasFocus
là dành cho hành vi của các mục mà mất tập trung, điều đó nên làm các trick! Nhưng hãy cẩn thận rằng trong trạng thái như vậy, sự thay đổi tập trung có thể ghi đè lên các mục của người dùng!
+1 - nhưng đáng chú ý là nếu chỉnh sửa văn bản của bạn là trong một listview, mỗi phím sẽ cho kết quả trong hộp mất và nhận được tập trung. Xem giải pháp này để theo dõi hộp hiện đang được tập trung: http://stackoverflow.com/questions/9527067/android-edittext-in-listview-loses-focus-on-calling-notifydatachanged – bsautner
41 phiếu bầu cho câu trả lời cơ bản nói "đọc giá trị 'hasFocus'". Sự thật là điều này thực sự khó khăn để làm cho editText mất tập trung và có rất nhiều câu hỏi chưa được trả lời về nó. –
Tôi sẽ thêm mã vào đâu? Nếu tôi đặt nó như là trong "onCreate" các sự cố ứng dụng – Jona