要保存和恢复v4 Fragment的状态,可以使用以下步骤和代码示例:
onSaveInstanceState
方法中保存状态数据:@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// 保存Fragment的状态数据到outState
outState.putString("key", "value");
}
onCreate
或onCreateView
方法中恢复状态数据:@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
// 从savedInstanceState中恢复Fragment的状态数据
String value = savedInstanceState.getString("key");
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// 保存Fragment的状态数据到outState
getSupportFragmentManager().putFragment(outState, "fragmentTag", fragment);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState != null) {
// 恢复Fragment的状态
fragment = getSupportFragmentManager().getFragment(savedInstanceState, "fragmentTag");
} else {
// 创建新的Fragment实例
fragment = new MyFragment();
}
// 将Fragment添加到Activity中
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, fragment, "fragmentTag")
.commit();
}
这样就可以在Activity重建时保存和恢复Fragment的状态数据了。请根据实际情况修改代码中的"key"、"value"、"fragmentTag"等参数。