Ich habe Facebook Login-Code innerhalb Fragment hinzugefügt. Alles funktioniert gut, ich kann mich in meine App einloggen, aber wenn ich das Fragment ändere oder die App nach dem Login wieder öffne, sind alle Daten verschwunden, zB email, name, birthday.it zeigt keine Daten an. Also, was soll ich tun, um diese Daten zu speichern.Facebook Login Datenverlust nach Wiedereröffnung App
Code
public class ProfileFragment extends Fragment{
ProfileTracker profileTracker;
RelativeLayout fbbg;
RelativeLayout rl;
LoginButton btnLogin;
CallbackManager callbackManager;
AccessTokenTracker accessTokenTracker;
CircleImageView profilePicture;
TextView email;
TextView gender;
TextView facebookName;
TextView birthday;
SharedPreferences pref;
public static final List<String> mPermissions = new ArrayList<String>() {{
add("public_profile");
add("email");
add("user_photos");
add("user_birthday");
}};
@Nullable
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstantState) {
View view = inflater.inflate(R.layout.profile, container, false);
FacebookSdk.sdkInitialize(getActivity());
btnLogin = (LoginButton)view.findViewById(R.id.view);
email = (TextView)view.findViewById(R.id.un2);
facebookName = (TextView)view.findViewById(R.id.username);
birthday = (TextView)view.findViewById(R.id.bd2);
gender = (TextView)view.findViewById(R.id.gnd2);
profilePicture = (CircleImageView)view.findViewById(R.id.profile_image);
rl = (RelativeLayout) view.findViewById(R.id.rl);
fbbg = (RelativeLayout) view.findViewById(R.id.relativeLayout);
callbackManager = CallbackManager.Factory.create();
btnLogin.setReadPermissions(mPermissions);
btnLogin.setFragment(this);
btnLogin.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
AccessToken accessToken = loginResult.getAccessToken();
Profile profile = Profile.getCurrentProfile();
GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
Log.d("JSON", ""+response.getJSONObject().toString());
try {
fbbg.setVisibility(View.GONE);
rl.setVisibility(View.VISIBLE);
email.setText(object.getString("email"));
gender.setText(object.getString("gender"));
facebookName.setText(object.getString("name"));
birthday.setText(object.getString("birthday"));
Glide.with(getActivity())
.load("https://graph.facebook.com/" + object.getString("id") + "/picture?type=large")
.into(profilePicture);
pref = getActivity().getSharedPreferences("", getActivity().MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putString("name", String.valueOf(facebookName));
editor.putString("email", String.valueOf(email));
editor.putString("gender", String.valueOf(gender));
editor.putString("birthday", String.valueOf(birthday));
editor.commit();
} catch (JSONException e) {
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email,gender,birthday");
request.setParameters(parameters);
request.executeAsync();
accessTokenTracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken,
AccessToken currentAccessToken) {
if (currentAccessToken == null) {
facebookName.setText("");
email.setText("");
gender.setText("");
birthday.setText("");
profilePicture.setImageResource(R.drawable.user);
}
}
};
profileTracker = new ProfileTracker() {
@Override
protected void onCurrentProfileChanged(Profile oldProfile, Profile newProfile) {
}
};
accessTokenTracker.startTracking();
profileTracker.startTracking();
}
@Override
public void onCancel() {
Toast.makeText(getActivity(),"Cancled to Login Facebook", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(FacebookException exception) {
Toast.makeText(getActivity(),"Error to Login Facebook", Toast.LENGTH_SHORT).show();
}
}); return view;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
pref = getActivity().getSharedPreferences("", getActivity().MODE_PRIVATE);
pref.getString("name", "asdfgh");
pref.getString("email", "qwerty");
pref.getString("gender", "zxcvb");
pref.getString("birthday", "kdhfaj");
}
@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);
}
}
After login pic After reopening app pic
hinzufügen alle Werte in der lokalen Datenbank ya Präferenz geteilt – Destro
Warum Sie nicht Ihre FB Login-Daten in „SharedPreference“ speichern –
i mit SharedPreference versucht, aber es hat nicht funktioniert –