Android get-facebook用户名异常仅限于创建视图层次结构的原始线程
我正在android中使用facebook api。我成功地在facebook上唱歌,并尝试检查facebook用户名 我写了一些代码,但我没有Android get-facebook用户名异常仅限于创建视图层次结构的原始线程,android,facebook,android-facebook,Android,Facebook,Android Facebook,我正在android中使用facebook api。我成功地在facebook上唱歌,并尝试检查facebook用户名 我写了一些代码,但我没有 only the original thread that created a view hierarchy 例外情况 这是我的代码: public void LoginFacebook() { mFacebook.authorize(this, mPermissions, new LoginDialogListener()); } p
only the original thread that created a view hierarchy
例外情况
这是我的代码:
public void LoginFacebook() {
mFacebook.authorize(this, mPermissions, new LoginDialogListener());
}
private final class LoginDialogListener implements DialogListener {
public void onComplete(Bundle values) {
SessionStore.save(mFacebook, getApplicationContext());
getProfileInformation();
}
public void onCancel() {
SessionEvents.onLoginError("Action Canceled");
}
@Override
public void onFacebookError(FacebookError error) {
SessionEvents.onLoginError(error.getMessage());
}
@Override
public void onError(DialogError error) {
SessionEvents.onLoginError(error.getMessage());
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
mFacebook.authorizeCallback(requestCode, resultCode, data);
}
@SuppressWarnings("deprecation")
@SuppressLint("SdCardPath")
public void getProfileInformation() {
mAsyncRunner.request("me", new BaseRequestListener() {
@SuppressLint("CommitPrefEdits")
@Override
public void onComplete(String response, Object state) {
Log.e("Profile", response);
String json = response;
try {
JSONObject profile = new JSONObject(json);
facebook_userid = profile.getString("id");
facebook_username = profile.getString("name");
facebook_username = facebook_username.replace("%20", " ");
fb_name.setText(facebook_username);
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onIOException(IOException e, Object state) {
}
@Override
public void onFileNotFoundException(FileNotFoundException e,
Object state) {
}
@Override
public void onMalformedURLException(MalformedURLException e,
Object state) {
}
@Override
public void onFacebookError(FacebookError e, Object state) {
}
});
}
我做错了什么。我可以在文本视图中唱歌,但无法显示用户名。
如果有人知道答案,请帮助我
感谢您在onComplete方法中尝试设置UI元素的文本。您的onComplete方法正在从后台(非主/UI线程)调用。任何时候进行UI更改时,它都必须位于UI线程上。尝试在onComplete中插入runOnUIThread调用,如下所示:
runOnUiThread(new Runnable() {
public void run() {
fb_name.setText(facebook_username);
}
});
注意:您需要在runnable final之外声明变量(例如:facebook\u用户名)
另外请注意:大多数(如果不是全部)基于web的调用将在后台线程上返回,因此您可能需要经常使用runOnUIThread