当用户界面中的EditText
行获得焦点时,会启动DatePickerFragment
以便用户输入日期。在方向更改时,如果EditText
行具有焦点和先前输入的日期(length()> 0)并且由于以下代码而启动DatePickerFragment
。在方向更改后,我不希望DatePickerFragment
启动。有没有办法修改或添加代码,这样如果Activity
是新创建的并且EditText
行有焦点,它就不会自动启动DatePickerFragment
?在onResume()
做某事是不是一个好主意?或者对!=null
做些什么?
ListenerEditText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
...
if (hasFocus && (fListenerEditText.getText().length() == 0)) {
DatePickerFragment newFragment = new DatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");
}
else if (hasFocus) {
...
DatePickerFragment newFragment = new DatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");
}
}
});
答案 0 :(得分:0)
如果requestFocus()
移除了Edittext
,也可以选择此类内容;在界面外移动以下行
DatePickerFragment newFragment = new DatePickerFragment();
并在界面内部进行布尔攻击
if(newFragment.isShow())// true if shown false if not
你的if语句以这种方式检查
if&只有当EditText具有焦点并且长度为0时才显示对话框,或者如果它具有焦点显示对话框,则此处不会大于0
希望我帮助
答案 1 :(得分:0)
在添加新的DatePickerFragment之前检查是否已存在。如果它不存在,则继续并添加DatePickerFragment。我假设“datePicker”是用于片段事务的标记。您可以使用
检查片段if (getSupportFragmentManager().findFragmentByTag("datePicker")==null) {
//Add new DatePickerFragment
}
如果有帮助,请告诉我。