android.view.InflateException:输出类com.facebook.login.widget.LoginButton时出错

时间:2017-07-26 17:29:21

标签: android facebook firebase firebase-authentication inflate-exception

我正在使用firebase在Android应用中集成facebook登录。 登录活动开始时应用程序崩溃并显示以下错误

  

无法启动活动ComponentInfo {com.environer.behappy / com.environer.behappy.LoginActivity}:android.view.InflateException:二进制XML文件行#20:二进制XML文件行#20:错误膨胀类com.facebook .login.widget.LoginButton

在新的facebook SDK中,无需通过调用FacebookSdk.initializeSdk()初始化sdk,因为它将自动初始化

我使用com.facebook.login.widget.LoginButton

导入了登录按钮

我也在CallBackManager上调用了onActivityResult

我的代码在下面

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    mCallBackManager = CallbackManager.Factory.create();
    ButterKnife.bind(this);
    mAuth = FirebaseAuth.getInstance();
    configureGoogleSignIn();
}
@OnClick(R.id.button_facebook)void facebookSignIn(){

    LoginButton loginButton = (LoginButton) findViewById(R.id.button_facebook);
    loginButton.setReadPermissions("email","public_profile");
    loginButton.registerCallback(mCallBackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            handleFacebookAccessToken(loginResult.getAccessToken());
        }

        @Override
        public void onCancel() {
            Toast.makeText(LoginActivity.this, getString(R.string.loginCancel), Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onError(FacebookException error) {
            Toast.makeText(LoginActivity.this, error.getMessage(), Toast.LENGTH_SHORT).show();
        }
    });

}

private void handleFacebookAccessToken(AccessToken accessToken) {
    AuthCredential credential = FacebookAuthProvider.getCredential(accessToken.getToken());
    mAuth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if(task.isSuccessful()){
                        FirebaseUser user = mAuth.getCurrentUser();
                        Toast.makeText(LoginActivity.this, getString(R.string.welcomeText) + user.getDisplayName(), Toast.LENGTH_SHORT).show();
                    }
                    else{
                        Toast.makeText(LoginActivity.this, task.getException().getMessage(), Toast.LENGTH_SHORT).show();
                    }
                }
            });
}
 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode == SIGNIN_CODE){
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        if(result.isSuccess()){
            GoogleSignInAccount account = result.getSignInAccount();
            firebaseAuthWithGoogle(account);
        }
        else{
            //Google signin Failed
            Toast.makeText(this, result.getStatus().toString(), Toast.LENGTH_SHORT).show();
        }
    }else{
        super.onActivityResult(requestCode,resultCode,data);
        mCallBackManager.onActivityResult(requestCode,resultCode,data);
    }

}

我的XML代码

<com.facebook.login.widget.LoginButton
    android:background="@color/colorPrimary"
    android:id="@+id/button_facebook"
    android:layout_width="300dp"
    android:layout_height="60dp"
    android:textSize="20sp"
    android:paddingTop="10dp"
    android:paddingBottom="10dp"
    android:layout_below="@+id/imageViewGmail"
    android:layout_alignLeft="@+id/imageViewGmail"
    android:layout_alignStart="@+id/imageViewGmail"
    android:layout_marginTop="12dp" />

0 个答案:

没有答案
相关问题