2017-01-20 16 views
0

Androidで非アクティビティクラスのFacebookログインを行うことはできますか?Android Facebookでログインしていないアクティビティクラス

私はソーシャルメディアログインなどのために異なる「設定クラス」を読み込むアクティビティを持っています。 Facebookの1つです。これは私のFacebook-Settings.xmlを読み込む非アクティビティクラスです。いくつかのスイッチボタンなどがあります。スイッチボタンのステータスが保存されています。 Facebookのログインボタンも統合しました。しかし、それはonSuccessが呼び出されていないようです

ここで何が間違っているのですか?非アクティビティクラスでFacebookにログインすることも可能ですか?

public class FacebookService extends SensorService { 

public FacebookService() { 
    super("fb"); 
} 

//add Sensorname UI 
@Override 
public void load() { 

    name.setText("FACEBOOOK"); 
} 

//load settings xml-file if settings button is clicked 
@Override 
public int getSettingsViewId() { 

     FacebookSdk.sdkInitialize(context.getApplicationContext()); 
     callbackManager = CallbackManager.Factory.create(); 

    } 

    return R.layout.fb_settings; 

} 


//Saves Checked Buttons from Facebook Seetings 
@Override 
public void save(View settings) { 

    TextView text = (TextView) settings.findViewById(R.id.FBText); 
    switchPosts = (Switch) settings.findViewById(R.id.switchPosts); 

    } 



//Creates View for Facebook Settings 
//loads Check Buttons state from Shared preferences and updates view 
@Override 
public void createSettings(View settings) { 

    LoginButton loginButton = (LoginButton) settings.findViewById(R.id.login_button); 
    loginButton.setReadPermissions("public_profile, email, user_about_me, user_posts, user_friends, user_events, user_photos, user_likes, user_relationships, user_birthday"); 
    getLoginDetails(loginButton); 
} 


protected void getLoginDetails(LoginButton login_button){ 

    // Callback registration 
    login_button.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult login_result) { 
      Log.d("app", "FB Login"); 

      accessToken = login_result.getAccessToken(); 
      if(accessToken != null){ 
       //statusFacebook.setText("Login Erfolgreich"); 
       Log.d("app", "Login success"); 
      } 
      else{ 
       //statusFacebook.setText("Login fehlgeschlagen"); 
       Log.d("app", "Login no success"); 
      } 

     } 

     @Override 
     public void onCancel() { 
      // code for cancellation 
     } 

     @Override 
     public void onError(FacebookException exception) { 
      // code to handle error 
     } 
    }); 
} 



private void setSwitches() { 

    //DO Something 
} 
} 

私はあなたがあなたのActivityFragmentonActivityResult方法へのログインの結果を受け、私の主な活動

protected void onCreate(Bundle savedInstanceState) { 

    .... 
    ServiceManager.getInstance().setContext(this); 
    ServiceManager.getInstance().setRoot((ViewGroup)findViewById(R.id.service_view)); 

    ServiceManager.getInstance().add(new FacebookService()); 
    ServiceManager.getInstance().add(new TwitterService()); 

}

答えて

0

からFacebookService.classを開始します。その後、そのメソッドに結果をCallbackManagerに渡す必要があります。この手順は自動ではありません。

だからあなたはあなたが非Activityクラスでログインを実装する場合は、とにかく、少なくともこのコード

+0

OK感謝を追加する必要があり、このような何か(このFragmentの方法)

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

を必要としています。私は本当にAndroidプログラミングの新しいです。少なくともこのコードを実装する必要がありますか?私は非アクティビティクラスでログインを実装したいと思います。私は自分のアクティビティでonActivityResult()を実装し、それを非アクティビティクラスに渡す必要がありますか? – user2348157

+0

正確です。またはFacebookServiceがその中で参照されている場合は、フラグメント内にあります。 onActivityResultはActivityおよびFragmentクラスで利用できますが、少し異なります – firegloves

+0

あなたは解決しましたか? – firegloves

関連する問題