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"/>

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...