gpt4 book ai didi

android - 我如何处理方向更改以使 fragment 无法加载?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:25:27 24 4
gpt4 key购买 nike

当 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) 包中,然后使用

在 onCreate 中恢复该数据
 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();
}

无论如何你一定要检查thisthis问题,它们可能会有所帮助。

关于android - 我如何处理方向更改以使 fragment 无法加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32902389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com