AJW*_*AJW 5 android android-datepicker android-fragments
当EditTextUI中的一行获得焦点时,将DatePickerFragment启动用户输入日期.
在方向更改时,如果EditText线具有焦点和先前输入的日期(这样length() > 0),我不希望片段自动显示.
有没有办法修改或添加代码,以便如果新创建活动并且该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");
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
您使用 viewPager 还是只是将片段添加到您的活动中?一种方法是将要在旋转时维护的数据保存到onSaveInstanceState(Bundle outState)捆绑包中,然后使用 onCreate 恢复该数据
if(savedInstanceState != null) {
//get your data
}
Run Code Online (Sandbox Code Playgroud)
或者仅在加载活动时添加片段(设备旋转后不会重新加载)
if(savedInstanceState == null)
{
mFragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
YourFragment fragment = new YourFragment();
fragmentTransaction.add(R.id.fragment_container, fragment);
fragmentTransaction.commit();
}
Run Code Online (Sandbox Code Playgroud)
无论如何,你一定要检查一下这个和这个问题,它们可能会有所帮助。
| 归档时间: |
|
| 查看次数: |
738 次 |
| 最近记录: |