微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – Facebook登录按钮在显示新视图之前在“注销”中更改其文本

我使用Facebook SDK 4.0通过Facebook为我的应用程序实现了登录.
用户点击Facebook登录按钮时,他导航到主页活动并加载新视图.问题是,有一段时间,在Facebook进程对话框消失之后并且在显示主视图之前,facebook登录按钮在“注销”中更改了他的文本,这是用户可见的.我怎么能避免这个?

这是片段登录中的代码

@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState)
{
    View view = inflater.inflate(R.layout.frg_login,container,false);

    callbackManager = CallbackManager.Factory.create();

    fbLoginButton = (LoginButton) view.findViewById(R.id.fb_login_button);
    fbLoginButton.setReadPermissions("user_friends");
    fbLoginButton.setReadPermissions("public_profile");
    fbLoginButton.setFragment(this);
    fbLoginButton.registerCallback(callbackManager,new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            GraphRequest request = GraphRequest.newMeRequest(
                    loginResult.getAccesstoken(),new GraphRequest.GraphJSONObjectCallback() {
                        @Override
                        public void onCompleted(
                                JSONObject object,GraphResponse response) {
                            // Application code
                            Log.v("LoginActivity",response.toString());
                            session = new SessionManager(getActivity());
                            try{ String name = object.getString("name");
                                session.createLoginSession(name,true);
                                //Toast.makeText(getActivity(),"Login successful",Toast.LENGTH_SHORT).show();
                            }
                            catch (JSONException exe) {  }
                            }
                    });
            Bundle parameters = new Bundle();
            parameters.putString("fields","id,name");
            request.setParameters(parameters);
            request.executeAsync();
        }

        @Override
        public void onCancel() {
            Toast.makeText(getActivity(),"Login canceled",Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onError(FacebookException exception) {
            Toast.makeText(getActivity(),"Login error",Toast.LENGTH_SHORT).show();
        }
    });

    return view;
}

调用片段的活动中:

if (currentAccesstoken != null) {
                    navigatetoHomeActivity();
                }
public void navigatetoHomeActivity(){
        Intent homeIntent = new Intent(getActivity(),MainActivity.class);
        homeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(homeIntent);
    }

谢谢大家

解决方法

您可以通过在Facebook按钮XML中添加以下三行来更改登录和注销按钮的文本:

<com.facebook.login.widget.LoginButton
        ...

        ...
        xmlns:facebook="http://schemas.android.com/apk/res-auto"
        facebook:com_facebook_login_text="LOGIN"
        facebook:com_facebook_logout_text="LOGIN"/>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐