2016-05-04 6 views
1

私は2つのボタンがあります。それぞれ異なるレイアウトになっていますが、Facebook SDKのそれぞれLoginButtonであるため、同じことをします。Facebook SDKの2つの異なるLoginButtonに同じコールバックを登録

同じクラスを、異なるレイアウトの2つの異なるボタンで同じアクションを処理できるようにすることはできますか?

私はButtonFacebook

loginFacebook.registerCallback(callbackManager, new ButtonFacebook()); 

と呼ばれる新しいプライベートクラスを作ったとButtonFacebookクラスは、この

private class ButtonFacebook implements FacebookCallback<LoginResult> { 

    @Override 
    public void onSuccess(LoginResult loginResult) { 
     /* CODE HERE */ 

    } 

    @Override 
    public void onCancel() { 
     /* CODE HERE */ 
    } 

    @Override 
    public void onError(FacebookException error) { 
     /* CODE HERE*/ 
    } 

    private class graphData implements GraphRequest.GraphJSONObjectCallback { 

     @Override 
     public void onCompleted(JSONObject object, GraphResponse response) { 
      /*CODE HERE*/ 
     } 
    } 
} 

私がしたいです理由ですので、私は内部クラスを使用するために好きではありませんこのクラスを使用して2つのボタンを管理しますが、解決策はパブリッククラスを作ることではないと思います... アドバイスはありますか?

+0

をしてください、見てみましょう[StackOverflowの中で尋ねる方法](のhttp://より多くの質問を投稿する前に、[最小、完全、および検証可能なサンプルを作成する方法](http://stackoverflow.com/help/mcve)を参照してください。 – Grender

答えて

1

あなたはそうです、あなたはそれを行うことができます。ただ、FacebookCallback<LoginResult>を実装public classを作成します。

public class LoginListener implements FacebookCallback<LoginResult> { 

    @Override 
    public void onSuccess(LoginResult loginResult) { 
     // Handle onSuccess action 
    } 

    @Override 
    public void onCancel() { 
     // Handle onCancel action 
    } 

    @Override 
    public void onError(FacebookException error) { 
     // Handle errors 
    } 

} 

次に、あなたのLoginButtoncallbackとしてそのクラスを設定します。

CallbackManager callbackManager = CallbackManager.Factory.create(); 
yourLoginButton.registerCallback(callbackManager, new LoginListener()); 
関連する問題