Я добавил код входа в Facebook внутри фрагмента. Все работает нормально, я могу войти в мое приложение, но когда я меняю фрагмент или открываю приложение после входа в систему, все данные уходят. Я пишу по электронной почте, имени, birthday.it не показывает никаких данных. Так что я должен делать, чтобы сохранить эти данные.Потеря данных для входа в Facebook после открытия приложения
код
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
добавить все значения в локальной базе данных я общее предпочтение – Destro
Почему вы не сохраните регистрационные данные FB в «SharedPreference» –
я пытался с SharedPreference, но это не сработало –