2015-04-06 22 views
9

Error:(36, 20) error: cannot find symbol method registerCallback(CallbackManager,>)loginButton.registerCallback không thể giải quyết phương thức

Khi tôi gọi thanh ghi nàyCallback từ Mainactivity to facebook sdk 4.0's lib. Đây là lớp học của tôi

public class MainActivity extends Activity { 
     TextView tv; 
     Button loginButton; 
     CallbackManager callbackManager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Log.e("Oncreate", "Now on On create"); 
     FacebookSdk.sdkInitialize(getApplicationContext()); 
     callbackManager = CallbackManager.Factory.create(); 
     tv =(TextView)findViewById(R.id.tv); 

     loginButton = (LoginButton)findViewById(R.id.login_button); 
     loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
      @Override 
      public void onSuccess(LoginResult loginResult) { 
       // App code 
      } 

      @Override 
      public void onCancel() { 
       // App code 
      } 

      @Override 
      public void onError(FacebookException exception) { 
       // App code 
      } 
     }); 

     LoginManager.getInstance().registerCallback(callbackManager, 
       new FacebookCallback<LoginResult>() { 
        @Override 
        public void onSuccess(LoginResult loginResult) { 
         // App code 
        } 

        @Override 
        public void onCancel() { 
         // App code 
        } 

        @Override 
        public void onError(FacebookException exception) { 
         // App code 
        } 
       }); 

    } 

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

    } 
} 
+0

http://stackoverflow.com/questions/29294015/how-to-check-if-user- is-logged-in-with-fb-sdk-4-0-for-android –

+0

Chào mừng bạn đến với StackOverflow! Tôi đã xóa phần Android của tiêu đề vì điều này là hiển nhiên. –

+1

Kiểm tra xem có ai có câu trả lời khác ở đây không - Tôi đang gặp vấn đề tương tự, Android Studio đang nói rằng 'loginButton.registerCallback' không thể được giải quyết. – Chris

Trả lời

7

loginButton phải loại LoginButton thay vì Button.

Không liên quan: Bạn không cần phải đăng ký cuộc gọi lại trên cả hai số loginButtonLoginManager.getInstance(). Trước đây là cho luồng loginButton, sau này nếu bạn có nút hoặc kích hoạt đăng nhập của riêng mình. Trong thực tế nó không rõ ràng trên tài liệu của Facebook, không phải lỗi của bạn.

10

Bạn phải gọi FacebookSdk.sdkInitialize(this.getApplicationContext())trướcsetContentView(). mẫu mã:

super.onCreate(savedInstanceState); 
FacebookSdk.sdkInitialize(this.getApplicationContext()); 
setContentView(R.layout.activity_login); 
callbackManager = CallbackManager.Factory.create(); 
loginButton = (LoginButton) findViewById(R.id.loginFaceBook_button); 
//etc.. 

Ngoài ra documentation đề cập đến hoặc sử dụng loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>()hayLoginManager.getInstance().registerCallback (callbackManager, new FacebookCallback<LoginResult>(), không được cả hai trong số họ. Dưới đây là một số mẫu mã đầy đủ:

private LoginButton loginButton; 
private CallbackManager callbackManager; 
@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    FacebookSdk.sdkInitialize(this.getApplicationContext()); 
    setContentView(R.layout.activity_login); 
    callbackManager = CallbackManager.Factory.create(); 
    loginButton = (LoginButton) findViewById(R.id.loginFaceBook_button); 
    List<String> permissionNeeds = Arrays.asList("user_photos", "email", "user_birthday", "public_profile"); 
    loginButton.setReadPermissions(permissionNeeds); 
    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() 
    { 
     @Override 
     public void onSuccess(LoginResult loginResult) 
     { 
      System.out.println("onSuccess"); 
     } 

     @Override 
     public void onCancel() 
     { 
      System.out.println("onCancel"); 
     } 

     @Override 
     public void onError(FacebookException exception) 
     { 
      Log.v("LoginActivity", exception.getCause().toString()); 
     } 
    }); 

Đừng quên bao gồm onActivityResult:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    super.onActivityResult(requestCode, resultCode, data); 
    callbackManager.onActivityResult(requestCode, resultCode, data); 
} 
Các vấn đề liên quan