每次方向更改并丢失字段值时,java Android OnCreateView调用两次
我知道这是一个被谈论的话题,但最近什么都没有。我按照所有建议的方法不创建两次,但它仍然创建,因此我丢失了信息。有没有关于如何修复的想法?提前感谢您的帮助
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;
}
# 1 楼答案
# 2 楼答案
在方向更改中,您需要将数据保存在onSaveInstanceState方法中,我认为您错过了该方法,这就是您丢失字段值的原因
例如: