在Android上获得完全自定义的Facebook登录按钮

时间:2015-10-22 09:17:37

标签: android facebook

对于我的应用程序,我希望我的Facebook按钮完全可定制。这意味着我不能使用com.facebook.login.widget.LoginButton并使用普通的android按钮代替。为了使它工作,我尝试了这个解决方案获得LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "user_friends"));,但它抛出一个错误说:

  

无法解析方法logInWithReadPermissions(匿名   android.view.View.OnClickListener,java.util.List)

你能帮忙吗?

 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        FacebookSdk.sdkInitialize(this.getApplicationContext());

        callbackManager = CallbackManager.Factory.create();

        LoginManager.getInstance().registerCallback(callbackManager,
                new FacebookCallback<LoginResult>() {
                    @Override
                    public void onSuccess(LoginResult loginResult) {
                        Log.d("Success", "Login");

                    }

                    @Override
                    public void onCancel() {
                        Toast.makeText(MainActivity.this, "Login Cancel", Toast.LENGTH_LONG).show();
                    }

                    @Override
                    public void onError(FacebookException exception) {
                        Toast.makeText(MainActivity.this, exception.getMessage(), Toast.LENGTH_LONG).show();
                    }
                });

        setContentView(R.layout.activity_main);

        Button btn_fb_login = (Button)findViewById(R.id.btn_fb_login);

        btn_fb_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                  LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "user_friends"));
            }
        });

    }

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    callbackManager.onActivityResult(requestCode, resultCode, data); 
}

1 个答案:

答案 0 :(得分:2)

问题出在这一行:

LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "user_friends"));

这里'this'指向onClickListener。但它应该指向“活动”或“片段”。

所以用this替换YourActivityName.this