Java 在片段中的.commit()或.apply()之后未保存SharedReferences

Java 在片段中的.commit()或.apply()之后未保存SharedReferences,java,android,sharedpreferences,Java,Android,Sharedpreferences,Framgent类 public class FragmentSignUp1 extends Fragment { private EditText editTextEmail; private EditText editTextUsername; UserSignUpPreferences userSignUpPreferences; @Override public View onCreateView(LayoutInflater inflate

Framgent类

public class FragmentSignUp1 extends Fragment {

    private EditText editTextEmail;
    private EditText editTextUsername;

    UserSignUpPreferences userSignUpPreferences;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_signup1, container, false);
        userSignUpPreferences = new UserSignUpPreferences(this.getActivity());

        //  Creating references to Views
        editTextEmail = (EditText) view.findViewById(R.id.editTextEmail);
        editTextUsername = (EditText) view.findViewById(R.id.editTextUsername);

        // Setting custom font on elements
        return view;
    }

//  Restore data if activity has been destroyed
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        if (savedInstanceState == null) {

        } else {
            editTextEmail.setText(savedInstanceState.getString("email"));
            editTextUsername.setText(savedInstanceState.getString("username"));
        }
    }

//  Save data if activity is destroyed
    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString("email", editTextEmail.getText().toString());
        outState.putString("username", editTextUsername.getText().toString());
    }

//  Save data if activity get paused
    @Override
    public void onPause() {
        super.onPause();
        Log.d("fragment_signup1", editTextEmail.getText().toString());
        userSignUpPreferences.editor.putString(editTextEmail.getText().toString(), userSignUpPreferences.USER_EMAIL)
        .putString(editTextUsername.getText().toString(), userSignUpPreferences.USER_USERNAME)
        .apply();
        Log.d("fragment_signup1", userSignUpPreferences.preferences.getString(userSignUpPreferences.USER_EMAIL, "null"));
    }

//  Retrieve data when activity is resumed
    @Override
    public void onResume() {
        super.onResume();
        Log.d("fragment_signup1", userSignUpPreferences.preferences.getString(userSignUpPreferences.USER_EMAIL, "null"));
        editTextEmail.setText(userSignUpPreferences.preferences.getString(userSignUpPreferences.USER_EMAIL, "2"));
        editTextUsername.setText(userSignUpPreferences.preferences.getString(userSignUpPreferences.USER_USERNAME, ""));
    }
}
用户首选项类

public class UserPreferences {

    public SharedPreferences.Editor editor;
    public SharedPreferences preferences;

    public UserPreferences(Context context, String prefFileName) {
        preferences = context.getSharedPreferences(prefFileName, Context.MODE_PRIVATE);
        editor = preferences.edit();
    }
}
public class UserSignUpPreferences extends  UserPreferences{

    private final static String USER_SEARCH_SETTINGS = "UserSearchSettingsPrefFile";
    public final String USER_EMAIL = "email";
    public final String USER_USERNAME = "username";

    public UserSignUpPreferences(Context context) {
        super(context, USER_SEARCH_SETTINGS);
    }
}
UserSignupReferences类

public class UserPreferences {

    public SharedPreferences.Editor editor;
    public SharedPreferences preferences;

    public UserPreferences(Context context, String prefFileName) {
        preferences = context.getSharedPreferences(prefFileName, Context.MODE_PRIVATE);
        editor = preferences.edit();
    }
}
public class UserSignUpPreferences extends  UserPreferences{

    private final static String USER_SEARCH_SETTINGS = "UserSearchSettingsPrefFile";
    public final String USER_EMAIL = "email";
    public final String USER_USERNAME = "username";

    public UserSignUpPreferences(Context context) {
        super(context, USER_SEARCH_SETTINGS);
    }
}

所以问题是。。。它不保存当前值。为什么?

在应用值时,参数是反向的。 的第一个参数是用于查找的键,第二个参数是与键关联的值

在这里反转它们,它应该可以工作:

//  Save data if activity get paused
@Override
public void onPause() {
    super.onPause();
    Log.d("fragment_signup1", editTextEmail.getText().toString());
    userSignUpPreferences.editor.putString(userSignUpPreferences.USER_EMAIL, editTextEmail.getText().toString())
    .putString(userSignUpPreferences.USER_USERNAME, editTextUsername.getText().toString())
    .apply();
    Log.d("fragment_signup1", userSignUpPreferences.preferences.getString(userSignUpPreferences.USER_EMAIL, "null"));
}
@米肯。在fragment onPause()方法中有.apply()