2017-05-03 2 views
0

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.

+0

wo Konstruktor Ihres gemeinsamen Präferenzen verwendet? –

+0

Sie können Ihre Graph-Daten in Json-Objekt speichern und speichern Sie es in freigegebenen Präferenz –

+0

'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 –

Antwort

-1

2 Methode

1.Save Daten Json Format String nicht Objekt konvertieren. Wenn vor get Daten json (String) nach der Konvertierung json erhalten Objekt (verwenden Gson)

2.Here https://github.com/pilgr/Paper

Verwandte Themen