Khi đường dây EditText
trong tiêu điểm tăng giao diện người dùng, số DatePickerFragment
sẽ khởi chạy để người dùng nhập ngày.Làm cách nào tôi có thể xử lý thay đổi Định hướng để Fragment không tải?
Khi thay đổi hướng, nếu dòng EditText
có tiêu điểm và ngày đã nhập trước đó (để length() > 0
), tôi không muốn phân đoạn tự động hiển thị.
Có cách nào để sửa đổi hoặc thêm mã để nếu Hoạt động mới được tạo và dòng EditText
đã tập trung, nó sẽ không tự động khởi chạy DatePickerFragment
?
Bạn nên làm điều gì đó trong onResume()
?
Hoặc làm điều gì đó với savedInstanceState()
và !=null
?
public class Activity extends AppCompatActivity {
...
EditText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
...
if (hasFocus && (EditText.getText().length() == 0)) {
DatePickerFragment newFragment = new DatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");
}
else if (hasFocus && (EditText.getText().length() > 0)) {
...
DatePickerFragment newFragment = new DatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");
}
}
});
}
Xin chào, chỉ cần thêm phân đoạn vào hoạt động. Tôi sẽ chỉnh sửa ở trên để hiển thị Hoạt động. – AJW
Ok, vì vậy tôi đang sử dụng DatePickerDialog để hiển thị (getSupportFragmentManager) thực hiện các thao tác phân mảnh. Dòng "if (savedInstanceState == null)" cũng có thể được hiểu là không thêm phân đoạn khi savedInstanceSate không phải là null, điều này đúng sau khi xoay thiết bị? – AJW
có, ngay cả khi bạn không lưu bất kỳ dữ liệu nào vào gói outState, savedInstenceState sẽ không bị rỗng nếu xoay thiết bị là trường hợp –