当 UI 中的 EditText
行获得焦点时,将启动一个 DatePickerFragment
以供用户输入日期。
方向改变时,如果 EditText
行有焦点和之前输入的日期(这样 length() > 0
)我不希望 fragment 自动展示。
有没有办法修改或添加代码,以便在新创建 Activity 并且 EditText
行具有焦点时它不会自动启动 DatePickerFragment
?
在 onResume()
中做点什么是个好主意吗?
或者用 savedInstanceState()
和 !=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");
}
}
});
}
最佳答案
您是使用 viewPager 还是只是将 fragment 添加到您的 Activity 中?一种方法是将您希望在轮换时保持的数据保存到 onSaveInstanceState(Bundle outState)
包中,然后使用
if(savedInstanceState != null) {
//get your data
}
或者仅在加载 Activity 时添加您的 fragment (设备旋转后不重新加载)
if(savedInstanceState == null)
{
mFragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
YourFragment fragment = new YourFragment();
fragmentTransaction.add(R.id.fragment_container, fragment);
fragmentTransaction.commit();
}
关于android - 我如何处理方向更改以使 fragment 无法加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32902389/