仅为第一次创建新实例。
这可以解决问题:
在活动第一次启动时创建一个新的片段实例,否则重用旧片段。
你怎么能做到这一点?
FragmentManager是关键
这是代码片段:
if(savedInstanceState==null) {
userFragment = UserNameFragment.newInstance();
fragmentManager.beginTransaction().add(R.id.profile, userFragment, "TAG").commit();
}
else {
userFragment = fragmentManager.findFragmentByTag("TAG");
}
在 Fragment 端保存数据
如果您的片段有 EditText、TextViews 或您想要在方向更改时保存的任何其他类变量。保存
并在方法onSaveInstanceState()
中检索它们onCreateView()
这是代码片段:
// Saving State
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("USER_NAME", username.getText().toString());
outState.putString("PASSWORD", password.getText().toString());
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.user_name_fragment, parent, false);
username = (EditText) view.findViewById(R.id.username);
password = (EditText) view.findViewById(R.id.password);
// Retriving value
if (savedInstanceState != null) {
username.setText(savedInstanceState.getString("USER_NAME"));
password.setText(savedInstanceState.getString("PASSWORD"));
}
return view;
}
您可以在此处查看完整的工作代码