Po uaktywnieniu linii EditText
w interfejsie użytkownika rozpoczyna się DatePickerFragment
, aby użytkownik mógł wprowadzić datę.Jak mogę obsłużyć zmianę orientacji, aby fragment się nie wczytał?
Po zmianie orientacji, jeśli linia EditText
ma fokus i wcześniej wprowadzoną datę (tak, aby length() > 0
) nie chcę, aby fragment automatycznie się wyświetlał.
Czy istnieje sposób modyfikowania lub dodawania kodu, aby w przypadku nowo utworzonego działania i ustawieniu linii EditText
nie zostanie automatycznie uruchomiona DatePickerFragment
?
Czy to byłby dobry pomysł, aby zrobić coś w onResume()
?
Lub zrób coś z savedInstanceState()
i !=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");
}
}
});
}
Cześć, tylko dodawanie fragmentu w działaniu. Będę edytować powyżej, aby pokazać działanie. – AJW
Ok, więc używam DatePickerDialog, więc pokaż (getSupportFragmentManager) robi fragmenttransactions. Linia "if (savedInstanceState == null)" może być również interpretowana jako nie dodawanie fragmentu, gdy zapisana wartość InventanceSate nie jest pusta, co jest prawdą po obrocie urządzenia? – AJW
Tak, nawet jeśli nie zapisujesz żadnych danych w pakiecie outState, zapisana wartośćInstenceState nie będzie miała wartości NULL, jeśli nastąpi rotacja urządzenia. –