2016-10-03 3 views
0

Ich habe zwei Fragmente CommentsFragment und RegistrationFragment Auf CommentsFragment Ich speichere nach meiner Vorliebe 3 String Datentyp.Singleton SharedPreference Android

Hier ist meine CommentsFragment

SingleTon singleTon; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_comment, container, false); 
    ButterKnife.bind(this, view); 
    Bundle args = getArguments(); 
    singleTon = SingleTon.getInstance(); 
    singleTon.setContext(getContext()); 
    user = singleTon.getUser(); 
    id = args.getInt("id"); 
    slug = args.getString("slug"); 
    return view; 
} 

Hier bin ich Speichern drei meine String Daten in meinem CommentsFragment.

@Override 
    public void onSaveClicked(User user) { 
     singleTon.setUser(user); 
    } 

Hier meine SingleTon-Datei.

public class SingleTon { 

private SharedPreferences preferences; 

private static SingleTon singleTon; 

public static SingleTon getInstance() { 

    if (singleTon == null) { 
     singleTon = new SingleTon(); 
    } 

    return singleTon; 

} 

public void setContext(Context context) { 
    preferences = context.getSharedPreferences("preferences", Context.MODE_PRIVATE); 
} 

public void setUser(User user) { 
    setMail(user.getMail()); 
    setName(user.getName()); 
    setWeb(user.getWebSite()); 
} 

public User getUser() { 
    User user = new User(); 
    user.setWebSite(getWeb()); 
    user.setName(getName()); 
    user.setMail(getMail()); 
    return user; 
} 

private void setMail(String mail) { 
    SharedPreferences.Editor editor = preferences.edit(); 
    editor.putString("mail", mail); 
    editor.apply(); 
} 

private void setName(String name) { 
    SharedPreferences.Editor editor = preferences.edit(); 
    editor.putString("name", name); 
    editor.apply(); 

} 

private void setWeb(String web) { 
    SharedPreferences.Editor editor = preferences.edit(); 
    editor.putString("web", web); 
    editor.apply(); 
} 

private String getName() { 
    return preferences.getString("name", null); 
} 

private String getWeb() { 
    return preferences.getString("web", null); 

} 

private String getMail() { 
    return preferences.getString("mail",null); 
} 

}

In My RegistrationFragment Ich möchte, dass meine drei alle String datas.Here darzustellen, wie ich es umgesetzt.

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_registration, container, false); 
    singleTon = SingleTon.getInstance(); 
    singleTon.setContext(getContext()); 
    user = singleTon.getUser(); 
    setEditText(); 

    return view; 
} 

private void setEditText() { 
    if (user.getWebSite() != null) { 
     edit_web.setText(user.getWebSite()); 
    } 
    if (user.getName() != null) { 
     edit_name.setText(user.getName()); 
    } 
    if (user.getMail() != null) { 
     edit_mail.setText(user.getMail()); 
    } 
} 

Meine Frage ist, wenn ich drei Tag in meinem CommentsFragment speichern und zu RegistrationFragment in meinem editTexts gehe es nicht meine Daten nicht zeigen, aber wenn ich meinen app schließen und es dann in meinem RegistrationFragment all drei Datenwerte ausgeführt sind gezeigt. Wie kann es lösen, bitte hilf mir?

Antwort

1

Versuchen Sie es mit editor.commit(); statt editor.apply();

auch eine Bedingung, um zu überprüfen, wenn der Benutzer nicht null ist. vor der unteren Zeile.

if (user.getWebSite() != null) { 
Verwandte Themen