我知道这是一个被讨论过的话题,但最近没什么。我遵循建议的所有方法不创建两次,但它仍然存在,因此我丢失了信息。有关如何修复的任何想法?在此先感谢您的帮助!
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
mRootView = inflater.inflate(R.layout.fragment_base_info, container, false);
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);
mShantiName = (EditText) mRootView.findViewById(R.id.baseInfoShantiName);
mEmail = (EditText) mRootView.findViewById(R.id.baseInfoEmail);
mPassword = (EditText) mRootView.findViewById(R.id.baseInfoPassword);
mFirstName = (EditText) mRootView.findViewById(R.id.baseInfoFirstName);
mLastName = (EditText) mRootView.findViewById(R.id.baseInfoLastName);
mPhone = (EditText) mRootView.findViewById(R.id.baseInfoPhone);
mPhonePerfixMS = (MultiSpinner) mRootView.findViewById(R.id.baseInfoPhonePrefix);
mShantiName.setText("fh");
mEmail.setText("d@f.com");
mPassword.setText("33ddSS..");
mFirstName.setText("gh");
mLastName.setText("rf");
mPhone.setText("5551212");
a++;
DeviceDisplayLanguage = Locale.getDefault().getDisplayLanguage();
if (DeviceDisplayLanguage.equals(getActivity().getString(R.string.DeviceDisplayGerman)))
mPassword.setGravity(Gravity.CENTER_VERTICAL|View.TEXT_ALIGNMENT_VIEW_START);
if (Common.user != null && ((Common.user.getNvGoogleUserId() != null && !Common.user.getNvGoogleUserId().equals("")) || (Common.user.getNvFacebookUserId() != null && !Common.user.getNvFacebookUserId().equals("")))) {
isLoginWith = true;
mPassword.setVisibility(View.GONE);
init();
} else {
isLoginWith = false;
mPassword.setVisibility(View.VISIBLE);
}
if (savedInstanceState != null) {
i++;
mShantiName.setText(savedInstanceState.get("Name").toString());
mEmail.setText(savedInstanceState.get("Email").toString());
mPassword.setText(savedInstanceState.get("Password").toString());
mFirstName.setText(savedInstanceState.get("FirstName").toString());
mLastName.setText(savedInstanceState.get("LastName").toString());
mPhone.setText(savedInstanceState.get("Phone").toString());
}
Toast.makeText(getActivity(), "i=" + i + "j=" + j + "a=" + a,
Toast.LENGTH_SHORT).show();
TelephonyManager tMgr = (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);
mPhonePerfix = (CountryToPhonePrefix.prefixFor(tMgr.getNetworkCountryIso().toUpperCase()));
initializer = new CustomViewsInitializer(getActivity());
if (((MultiSpinner) mRootView.findViewById(R.id.baseInfoPhonePrefix)).getChooseValues().size() > 0)
selected = ((MultiSpinner) mRootView.findViewById(R.id.baseInfoPhonePrefix)).getChooseValues().get(0);
initializer.setSpinner(mPhonePerfixMS, CodeValue.countries, getString(R.string.signUpPhonePrefix), selected);
// InitValidation();
mRootView.findViewById(R.id.baseInfoCreateUserBtn).setOnClickListener(this);
mShantiName.requestFocus();
return mRootView;
}
答案 0 :(得分:0)
在方向更改中,您需要使用onSaveInstanceState方法保存数据我认为您错过了丢失字段值的方法。
//Here you Save your data
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("Name", mShantiName.getText().toString());
outState.putString("Email", mEmail.getText().toString());
outState.putString("Password", mPassword.getText().toString());
outState.putString("FirstName", mFirstName.getText().toString());
outState.putString("LastName", mLastName.getText().toString());
outState.putString("Phone", mPhone.getText().toString());
}
示例:
public class Fragment_1 extends Fragment {
private EditText title;
private Button go_next;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true); //Will ignore onDestroy Method (Nested Fragments no need this if parent have it)
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
onRestoreInstanceStae(savedInstanceState);
return super.onCreateView(inflater, container, savedInstanceState);
}
//Here you can restore saved data in onSaveInstanceState Bundle
private void onRestoreInstanceStae(Bundle savedInstanceState){
if(savedInstanceState!=null){
String SomeText = savedInstanceState.getString("title");
}
}
//Here you Save your data
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("title", "Some Text");
}
}
答案 1 :(得分:0)
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
if (mSpinnerstate != null)
outState.putInt("category", mSpinnerstate.getSelection());
// do this for each or your Spinner
// You might consider using Bundle.putStringArray() instead
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (savedInstanceState != null)
mSpinnerstate.setSelection(savedInstanceState.getInt("category", 0));
}