2016-04-09 11 views
0

Oturum açtıktan sonra kullanıcı bilgilerini kaydetmeye çalışıyorum (Facebook ile). Verileri alabiliyorum ancak kaydedemiyorum. SharedPreferences kullanıyorum ancak kaydedemiyorum. Başka bir etkinliğe geçtiğimde veri kaybolmuyor, ancak geri düğmesini tıklayıp bu etkinliği tekrar açtığımda tüm veriler kayboluyor.Facebook'ta oturum açarak Paylaşılan Tercihleri ​​Kullanma

Profilee.java

public class Profilee extends Fragment { 

    String email1, birthday1, gender1; 
    ImageView imageView; 
    static int itis = 1; 
    TextView texty; 
    LoginButton button; 
    LinearLayout userinput; 
    private CallbackManager callbackManager; 
    private TextView textView; 
    SharedPreferences pref; 
    private TextView email, birthday, gende; 
    private AccessTokenTracker accessTokenTracker; 
    private ProfileTracker profileTracker; 


    private FacebookCallback<LoginResult> callback = new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 
      AccessToken accessToken = loginResult.getAccessToken(); 
      Profile profile = Profile.getCurrentProfile(); 
      GraphRequest graphrequest = GraphRequest.newMeRequest(loginResult.getAccessToken(), 
        new GraphRequest.GraphJSONObjectCallback() { 

         @Override 
         public void onCompleted(JSONObject object, GraphResponse response) { 
          JSONObject jsonObject = response.getJSONObject(); 
          if (jsonObject != null) { 
           try { 
            email1 = jsonObject.getString("email"); 
            gender1 = jsonObject.getString("gender"); 
            birthday1 = jsonObject.getString("birthday"); 
           } catch (JSONException e) { 
            e.printStackTrace(); 
           } 
          } 
         } 
        }); 
      Bundle parameters = new Bundle(); 
      parameters.putString("fields", "email, gender, birthday"); 
      graphrequest.setParameters(parameters); 
      graphrequest.executeAsync(); 
      AppEventsLogger.activateApp(getContext()); 
     } 

     @Override 
     public void onCancel() { 

     } 

     @Override 
     public void onError(FacebookException e) { 

     } 
    }; 

    public Profilee() { 
     // Required empty public constructor 
    } 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     FacebookSdk.sdkInitialize(getActivity().getApplicationContext()); 
     callbackManager = CallbackManager.Factory.create(); 
     Toast.makeText(getContext(), "Create", Toast.LENGTH_SHORT).show(); 
     pref = getContext().getSharedPreferences("", getContext().MODE_PRIVATE); 
     pref.getString("name", "asdfgh"); 
     pref.getString("email", "qwerty"); 
     pref.getString("gender", "zxcvb"); 
     accessTokenTracker = new AccessTokenTracker() { 
      @Override 
      protected void onCurrentAccessTokenChanged(AccessToken oldToken, AccessToken newToken) { 
      } 
     }; 

     profileTracker = new ProfileTracker() { 
      @Override 
      protected void onCurrentProfileChanged(Profile oldProfile, Profile newProfile) { 
      } 
     }; 

     accessTokenTracker.startTracking(); 
     profileTracker.startTracking(); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.fragment_profilee, container, false); 
     button = (LoginButton) v.findViewById(R.id.login_button); 
     TextView button12 = (TextView) v.findViewById(R.id.edit); 
     button12.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent i = new Intent(getContext(), PrifileEdit.class); 
       i.putExtra("st", email1); 
       startActivity(i); 
      } 
     }); 
     texty = (TextView) v.findViewById(R.id.emo); 
     imageView = (ImageView) v.findViewById(R.id.asd); 
     userinput = (LinearLayout) v.findViewById(R.id.userdetail); 
     int unicode = 0x1F60E; 
     String emoji = getEmijoByUnicode(unicode); 
     String text = "We will never post on your wall without permission "; 
     texty.setText(text + emoji); 

     Toast.makeText(getContext(), "CreateView", Toast.LENGTH_SHORT).show(); 
     return v; 
    } 


    public String getEmijoByUnicode(int unicode) { 
     return new String(Character.toChars(unicode)); 
    } 


    @Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     LoginButton loginButton = (LoginButton) view.findViewById(R.id.login_button); 
     textView = (TextView) view.findViewById(R.id.textView); 
     email = (TextView) view.findViewById(R.id.emailid); 
     gende = (TextView) view.findViewById(R.id.gender); 
     birthday = (TextView) view.findViewById(R.id.birth); 
     loginButton.setReadPermissions("email"); 
     loginButton.setFragment(this); 
     loginButton.registerCallback(callbackManager, callback); 
     Toast.makeText(getContext(), "ViewCreate", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     callbackManager.onActivityResult(requestCode, resultCode, data); 
     new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       onResume(); 
      } 
     }, 2000); 
    } 

    public void displayMessage(final Profile profile) { 
     if (itis == 1) { 


      if (profile != null) { 
       textView.setText(profile.getName()); 
       email.setText(email1); 
       gende.setText(gender1); 
       birthday.setText(birthday1); 
       button.setVisibility(View.GONE); 
       texty.setVisibility(View.GONE); 
       userinput.setVisibility(View.VISIBLE); 

       pref = getContext().getSharedPreferences("", getContext().MODE_PRIVATE); 
       SharedPreferences.Editor editor = pref.edit(); 
       editor.putString("name", String.valueOf(textView)); 
       editor.putString("email", String.valueOf(email)); 
       editor.putString("gender", String.valueOf(gende)); 
       editor.commit(); 
      } 
     } 
    } 

    @Override 
    public void onStart() { 
     super.onStart(); 
     Toast.makeText(getContext(), "Start", Toast.LENGTH_SHORT).show(); 
    } 


    @Override 
    public void onStop() { 
     super.onStop(); 
     accessTokenTracker.stopTracking(); 
     profileTracker.stopTracking(); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     Profile profile = Profile.getCurrentProfile(); 
     displayMessage(profile); 
     AppEventsLogger.activateApp(getContext()); 
    } 
} 
+0

burada bakın http://coderzpassion.com/android-working-user-sessions/ ayrıntılı olarak paylaşılan tercihlerini nasıl kullanılacağını bilmek –

cevap

0

bu sorun nedeniyle DisplayMessage() yöntem olduğunu düşünüyorum.

bu etkinliğini yeniden açtığınızda, onResume(); yöntemi arayacak ve displayMessage().

yılında DisplayMessage() Eğer değerleri tekrar sharedprefrecens ayarlarken ve sizin neden bu işi bu sharedprefrecens den önceki verileri kaybetti.

Eğer onCreate yöntemi içinde onResume kodları kesmek gerekir bu sorunu çözmek için

+0

aslında onCreate() çağrılıyor. Ayrıca, Resume() 'nin çağrıldığını düşündüm ama sonra onu kullandım ve bununla ilgili bir şeyler öğrendim. –

+0

. Paylaşılan tüm şeyleri kaldırmalısınız. –

0

Doğru SharedPreferences verileri ısrarlı değildir: İşte benim kodudur. getText(), TextView'da görüntülenmekte olan metni paylaşarak, bunları SharedPreferences içine saklamanıza olanak tanır.

editor.putString("name", String.valueOf(textView)); // wrong 
editor.putString("name", textView.getText().toString()); // right 

Daha sonra değerini almak ve setText() arayarak ekranda görüntüleyebilirsiniz.

String myEmail = pref.getString("email", "qwerty"); 
textView.setText(myEmail); 
+0

hiçbir şey olmadı –

İlgili konular