初めて新しいインスタンスを作成します。
これでうまくいき
ます。アクティビティが初めて開始されたときに新しいフラグメントのインスタンスを作成し、それ以外の場合は古いフラグメントを再利用します。
どうすればこれを行うことができますか?
FragmentManagerが鍵です
コードスニペットは次のとおりです。
if(savedInstanceState==null) {
userFragment = UserNameFragment.newInstance();
fragmentManager.beginTransaction().add(R.id.profile, userFragment, "TAG").commit();
}
else {
userFragment = fragmentManager.findFragmentByTag("TAG");
}
フラグメント側でデータを保存する
フラグメントに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;
}
あなたはここで完全に機能するコードを見ることができます