登录:在去另一个活动应用程序后忘记了Facebook图片,并命名文本
Posted
技术标签:
【中文标题】登录:在去另一个活动应用程序后忘记了Facebook图片,并命名文本【英文标题】:Login: after going to another activity app forgot Facebook picture, and name text 【发布时间】:2015-06-04 17:09:35 【问题描述】:我在我的 android 应用程序中使用 Facebook SDK 时遇到了两个问题。
(已解决)在进行其他活动后,或重新打开应用程序。它不记得头像和名字(名字和姓氏)。
如果您选择注销,它仍会显示您的姓名和图片。
如果有人可以帮助我,我会非常高兴。请提供代码 - 不要说只是这样做。谢谢!
public class Profile extends Activity
/**
* Called when the activity is first created.
*/
WebView web;
ArrayList<NavigationDrawerItem> listItems;
DrawerLayout drawerLayout;
ActionBarDrawerToggle drawerToggle;
ListView list;
private CallbackManager callbackManager;
private ProfilePictureView profilePictureView;
private TextView name;
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.activity_profile);
callbackManager = CallbackManager.Factory.create();
LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setReadPermissions("public_profile", "email", "user_friends");
final ProfilePictureView profilePictureView = (ProfilePictureView) findViewById(R.id.profilepic);
final TextView name = (TextView) findViewById(R.id.name);
final SharedPreferences sharedPrefs = getSharedPreferences("details", MODE_PRIVATE);
//After referencing your Views, add this.
String nameStr = sharedPrefs.getString("name", null);
String idStr = sharedPrefs.getString("id", null);
if(nameStr != null)
name.setText(nameStr);
if(idStr != null)
profilePictureView.setProfileId(idStr);
//.. Do the same for other profile data
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>()
@Override
public void onSuccess(LoginResult loginResult)
AccessToken accessToken = loginResult.getAccessToken();
com.facebook.Profile profile = com.facebook.Profile.getCurrentProfile();
profilePictureView.getProfileId();
profilePictureView.setProfileId(profile.getId());
name.setText(profile.getName());
SharedPreferences.Editor editor = sharedPrefs.edit();
editor.putString("name", profile.getName());
editor.putString("id", profile.getId());
//.. Do the same for other profile data
editor.commit();
@Override
public void onCancel()
// App code
@Override
public void onError(FacebookException exception)
// App code
Log.i("Error", "Error");
);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
callbackManager.onActivityResult(requestCode, resultCode, data);
【问题讨论】:
只有在点击登录按钮时才会调用登录回调。尝试使用SharedPreferences
来存储姓名和其他个人资料详细信息。
@siris_cac : 也许你可以提供一个答案,请提供更多信息:)?
【参考方案1】:
将详细信息存储在SharedPreferences
中并检索它们。
将此添加到您的onCreate()
。
SharedPreferences sharedPrefs = getSharedPreferences("details", MODE_PRIVATE);
在你的回调中添加onSuccess()
,
Editor editor = sharedPrefs.edit();
editor.putString("name", profile.getName());
editor.putString("id", profile.getId());
//.. Do the same for other profile data
editor.commit();
再次在您的onCreate()
中,
SharedPreferences sharedPrefs = getSharedPreferences("details", MODE_PRIVATE);
//After referencing your Views, add this.
String nameStr = sharedPrefs.getString("name", null);
String idStr = sharedPrefs.getString("id", null);
AccessToken token = AccessToken.getCurrentAccessToken();
if(token != null)
if(nameStr != null)
name.setText(nameStr);
if(idStr != null)
profilePictureView.setProfileId(id);
]
//.. Do the same for other profile data
【讨论】:
我对这一行有疑问:if(id != null) - 无法解析符号 id。已使用您发布的代码更新了我的问题。 对不起。它应该是 idStr。检查更新的答案。 这个profilePictureView.setProfileId(id);应该是 profilePictureView.setProfileId(idStr); . (我已经编辑了我的答案。)问题 1 现已解决。数字 2 仍然存在问题。 更新了答案。请在询问之前做一些研究。这些问题很常见。 :) 很抱歉问这个问题 - 但我真的卡住了。查找符号会话似乎存在问题,并且方法 isOpened 无法解决。我已经导入:import com.facebook.Session;以上是关于登录:在去另一个活动应用程序后忘记了Facebook图片,并命名文本的主要内容,如果未能解决你的问题,请参考以下文章