我的Android应用程序有一个导航抽屉。所以我需要用Fragments实现Facebook登录功能。我遵循了使用Fragment Activities开发的this example。所以我尝试将该解决方案转换为Fragments。这是我到目前为止所做的事情
public class LoginFragment extends Fragment {
private String TAG = "LoginFragment";
EditText txt_login_email,txt_login_pass;
TextView txt_login_message;
LoginButton login_button;
private UiLifecycleHelper uiHelper;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_login, container, false);
uiHelper = new UiLifecycleHelper(getActivity(), statusCallback);
uiHelper.onCreate(savedInstanceState);
login_button = (LoginButton) v.findViewById(R.id.fb_login_button);
txt_login_message = (TextView) v.findViewById(R.id.txt_login_message);
login_button.setReadPermissions(Arrays.asList("email"));
login_button.setUserInfoChangedCallback(new UserInfoChangedCallback() {
@Override
public void onUserInfoFetched(GraphUser user) {
if (user != null) {
txt_login_message.setText("You are currently logged in as " + user.getName());
} else {
txt_login_message.setText("You are not logged in.");
}
}
});
return v;
}
private Session.StatusCallback statusCallback = new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state,
Exception exception) {
if (state.isOpened()) {
Log.d("MainActivity", "Facebook session opened.");
} else if (state.isClosed()) {
Log.d("MainActivity", "Facebook session closed.");
}
}
};
@Override
public void onResume() {
super.onResume();
uiHelper.onResume();
}
@Override
public void onPause() {
super.onPause();
uiHelper.onPause();
}
@Override
public void onDestroy() {
super.onDestroy();
uiHelper.onDestroy();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
uiHelper.onActivityResult(requestCode, resultCode, data);
}
@Override
public void onSaveInstanceState(Bundle savedState) {
super.onSaveInstanceState(savedState);
uiHelper.onSaveInstanceState(savedState);
}
/**
* Print hash key
*/
public static void printHashKey(Context context) {
try {
String TAG = "com.dd.sampletwo";
PackageInfo info = context.getPackageManager().getPackageInfo(TAG, PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String keyHash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
Log.d(TAG, "keyHash: " + keyHash);
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
}
}
和清单
<activity android:name="com.facebook.LoginActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<meta-data android:name="com.facebook.sdk.ApplicationId"
android:value="@string/app_id" />
所以我的问题是当我用facebook按钮点击登录时,根本没有任何反应。我已尝试使用片段活动相同的代码,一切正常。我在这里想念的是什么?有人可以解释一下这个原因吗?