Facebook3.0のフラグメントを使用してログインしようとしています。以下に示すように、クリック時の方法に応答する画像ボタンをフラグメントに作成しました。
OnCreateViewおよびOnClickViewコード:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle saved){
View v = inflater.inflate(R.layout.mefrag, group, false);
ImageButton button = (ImageButton) v.findViewById(R.id.facebooklogin);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loginToFacebook();
}
});
return v;
}
logintoFacebookメソッドは、次のアクティビティを開始しません。fbダイアログが表示され、詳細が受け入れられてから、フラグメントが再び表示されます。このコードを別のアクティビティでテストしましたが、正常に機能します。ここで機能しない理由がわかりません。
Facebookログインコード:
public void loginToFacebook(){
Session.openActiveSession(getActivity(), true, new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
if (session.isOpened()) {
Log.d("LOGIN", "activated session");
// make request to the /me API
Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
// callback after Graph API response with user object
@Override
public void onCompleted(GraphUser user, Response response) {
if (user != null) {
Log.d("LOGIN", "activated on complete");
fbuserid = user.getId();
fbusername = user.getFirstName();
SharedPreferences fbDetails = getActivity().
getSharedPreferences("fbDetails", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = fbDetails.edit();
editor.putString(FB_USER, user.getFirstName());
editor.putString(FB_ID,user.getId());
editor.putBoolean("logged in", true);
editor.commit();
loginFacebookKinveyUser();
Intent i = new
Intent("com.example.chartviewer.MyArtistsActivity");
startActivityForResult(i, 1);
}
}
});
}
}
});
}
何かご意見は?