Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android get-facebook用户名异常仅限于创建视图层次结构的原始线程_Android_Facebook_Android Facebook - Fatal编程技术网

Android get-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

我正在android中使用facebook api。我成功地在facebook上唱歌,并尝试检查facebook用户名 我写了一些代码,但我没有

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