我跟着facebook documentation创建了一个带登录按钮的简单应用。
现在,我希望在用户登录后隐藏登录按钮。
我在这里读了stackoverflow,我应该保存访问令牌字符串和它的到期日期,并检查它是否“已过期”(忽略它可以随时由Facebook过期的情况 - 只是理论上)或者如果它不是' t尚未插入(用户尚未登录的点),然后分别显示/隐藏按钮。
我尝试调整以下方法:
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_main, container, false);
LoginButton authButton = (LoginButton) view.findViewById(R.id.authButton);
authButton.setFragment(this);
authButton.setReadPermissions(Arrays.asList("public_profile", "user_friends"));
if(!hasToShowLogin()){
authButton.setVisibility(View.GONE);
}
return view;
}
方法'hasToShowButton'中的代码不相关,因为它有效,它只适用于演示。
上面的代码应该在首次创建视图时隐藏按钮,这个应该在登录完成后隐藏按钮,并位于OnActivityResult中:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
uiHelper.onActivityResult(requestCode, resultCode, data);
View view = getView();
LoginButton authButton = (LoginButton) view.findViewById(R.id.authButton);
authButton.setVisibility(View.GONE);
}
无论如何,按钮会一直显示,并且正常工作。
总而言之,我要做的是:
(换句话说:用户登录时从不显示登录按钮)
一直在为这个小时而烦恼。谢谢帮助者!
P.S注意,虽然setVisibility不会隐藏按钮,但登录后该按钮不起作用。所以它就在那里,我只需要将它隐藏在屏幕上......
答案 0 :(得分:0)
这对我有用。
boolean loggedIn = AccessToken.getCurrentAccessToken() != null;
if (loggedIn){
loginButton.setVisibility(View.GONE);
}
else{
loginButton.setVisibility(View.VISIBLE);
}