我有一个片断,似乎是自动恢复状态的屏幕旋转配置更改。我可以在日志中验证每当屏幕旋转时在片段中调用onCreatView。尽管向下调用applyDefaults(),但当屏幕旋转并调用onCreateView()时,用户创建的草稿条目将被保留。
我的理解是,我必须在onSaveInstanceState()中保存状态,并在onCreateView()中恢复状态,但情况似乎并非如此。有人能解释一下吗?
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.d(TAG, "onCreateView()");
View view = inflater.inflate(R.layout.fragment_email_entry, container, false);
m_hostNameEditText = (EditText) view.findViewById(R.id.hostNameEditText);
// set reference for other fields
applyDefaultsForNewEmailAccount();
return view;
}
private void applyDefaults() {
m_hostNameEditText.setText("");
// set other defaults
}
这可能与我的活动继承自SingleFragmentActivity,因此它可能看到片段已经在视图中有关。不过,我们知道Fragment.onCreateView()正在被调用。
public abstract class SingleFragmentActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.single_fragment_activity);
FragmentManager fragmentManager = getFragmentManager();
Fragment fragment = fragmentManager.findFragmentById(R.id.single_frame_container);
if (fragment == null) {
fragment = createFragment();
fragmentManager.beginTransaction()
.add(R.id.single_frame_container, fragment)
.commit();
}
}
public abstract Fragment createFragment();
}
就像一个活动一样,片断会自动按照视图组件的ID保存包中任何片断视图组件的数据。与本练习一样,如果您实现了onSaveInstanceState()方法,请确保添加对super.onSaveInstanceState()方法的调用,以保留视图数据的自动保存特性。
来源
我试图理解使用片段保存和恢复状态的过程。我用它创建了滑动导航菜单。 其中一个片段中有以下代码: 例如,我想在用户退出片段之前保存复选框的状态,并在再次创建片段时恢复它。如何实现这一点? 编辑: 根据raxellson的回答,我将片段更改为: 我已被记录,因此未保存savedInstanceState。我做错了什么?
我搜索了很多信息,但没有一个明确的。有人能给出一个明确的解决方案和一个例子吗?
在绘画的时候,经常会有这种情况,本来正在用绿色笔画,突然需要用红色笔画几笔,但画完了之后又要换成绿色笔。如果是在现实中作画,可以把笔蘸上不同的墨水,画了之后又蘸上之前的墨水,或者准备几只笔,要用哪只就选哪只。 在Canvas中也可以这样,不过Canvas中的画笔永远只有一只。所以,如果要更换画笔的颜色,就需要保存和恢复状态。状态其实就是画布当前属性的一个快照,包括: 图形的属性值,如strokeS
状态的保存与恢复 操作流程 为了状态的保存与恢复,我们可以先用栈上的一小段空间来把需要保存的全部通用寄存器和 CSR 寄存器保存在栈上,保存完之后在跳转到 Rust 编写的中断处理函数;而对于恢复,则直接把备份在栈上的内容写回寄存器。由于涉及到了寄存器级别的操作,我们需要用汇编来实现。 而对于如何保存在栈上,我们可以直接令 sp 栈寄存器直接减去相应需要开辟的大小,然后依次放在栈上。需要注意的是,
我有一个ViewPager有3个碎片绑定在FragmentPagerAdapter在一个FragmentActivity中,当我切换到不同的应用程序,回到我的应用程序后,或者在一个输入调用后,碎片没有恢复到以前的状态,一个碎片完全消失了,一些碎片按钮点击不工作..但在模拟器中它的工作很好 帮帮我吧...
我创建了一个全新的项目来展示我的问题。基本上,我的片段有两个。在使用CreateView时,我总是使用。但是,如果我检查,然后通过按后退按钮向外导航,下次打开它时,它会自动检查。那种行为打破了我的逻辑。 MainActivity.java weirdfragment.java 因此,我可以看到它是onRestoreInstanceState检查我的。但我不知道如何预防。我正在考虑的事情: 在OnV