Ich benutze Facebook Login, nach erfolgreicher Anmeldung in Login Activity Bildschirm bewegt sich zu Hauptaktivität. Ich möchte Facebook-Benutzerdetails in Hauptaktivität wie Name, E-Mail, Standort, Geschlecht, Fbid anzeigen. Ich speichere die Daten in Sitzung mit Hilfe von SharedPreferences
. Jetzt möchte ich die Sitzungswerte in meiner Hauptaktivität verwenden. Ich versuche HashMap
, aber es funktioniert nur für 2 Werte. unten ist die Anmeldungs AktivitätSpeichern Fb Benutzerdaten in Sitzung und Verwendung in einer anderen Aktivität Android
fbloginbtn.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
Log.v("Main", response.toString());
setProfileToView(object);
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email,gender,birthday,location");
request.setParameters(parameters);
request.executeAsync();
session.setFblogin(true);
Intent i = new Intent(LoginActivity.this,MainActivity.class);
startActivity(i);
finish();
}
private void setProfileToView(JSONObject jsonObject) {
try {
String fbemail= jsonObject.getString("email");
String fbgender=jsonObject.getString("gender");
String fbName= jsonObject.getString("name");
String fbLocation=jsonObject.getString("location");
String fbid = jsonObject.getString("id");
profilePictureView.setPresetSize(ProfilePictureView.NORMAL);
profilePictureView.setProfileId(jsonObject.getString("id"));
String propic = "https://graph.facebook.com/" + fbid+ "/picture?type=large";
session.setFbLogin(fbid, fbName, propic, fbLocation, fbgender, fbemail);
} catch (JSONException e) {
e.printStackTrace();
}
}
in Session.java
public class Session {
private SharedPreferences sp;
private SharedPreferences.Editor spEditor;
public static final String KEY_FBUID ="Fbid";
public static final String KEY_FBNAME ="Fbname";
public static final String KEY_FBEMAIL="Fbemail";
public static final String KEY_FBGEND ="Fbgend";
public static final String KEY_FBPROPIC ="Fbpropic";
public static final String KEY_FBLOCAT ="Fblocation";
public Session(Context context) {
sp = PreferenceManager.getDefaultSharedPreferences(context);
}
public boolean setFblogin(boolean status){
spEditor= sp.edit();
spEditor.putBoolean("fb_logged_in",status);
spEditor.commit();
return true;
}
public void setFbLogin(String fid, String fname, String fpropic, String fulocation, String fbgend,String fbemail){
spEditor.putString("Fbid",fid);
spEditor.putString("Fbname",fname);
spEditor.putString("Fbpropic",fpropic);
spEditor.putString("Fblocation",fulocation);
spEditor.putString("Fbgend",fbgend);
spEditor.putString("Fbemail",fbemail);
spEditor.commit();
}
public HashMap<String, String> getfbUserDetails(){
HashMap<String, String> user = new HashMap<String, String>();
// user name
user.put(KEY_FBUID, sp.getString(KEY_FBUID, null));
user.put(KEY_FBNAME, sp.getString(KEY_FBNAME, null));
user.put(KEY_FBEMAIL, sp.getString(KEY_FBEMAIL, null));
user.put(KEY_FBLOCAT, sp.getString(KEY_FBLOCAT, null));
user.put(KEY_FBPROPIC, sp.getString(KEY_FBPROPIC, null));
return user;
}
in meiner Hauptaktivität ich will will getfbuserDetails()
verwenden und die Sitzung gespeicherten Werte zu holen. aber HashMap funktioniert nicht.
Bitte Kommentar, wenn Zweifel bestehen.
wo Konstruktor Ihres gemeinsamen Präferenzen verwendet? –
Sie können Ihre Graph-Daten in Json-Objekt speichern und speichern Sie es in freigegebenen Präferenz –
'aber HashMap funktioniert nicht.' Zeigt es einen Fehler? Was bedeutet es, nicht zu arbeiten? Veröffentlichen Sie Ihren Code von 'MainActivity' auch dort, wo Sie die Werte –