我是Android的初学者。在我的应用程序中,我创建了一个多片段的活动。 在我的应用程序中,我将第一个屏幕显示为登录屏幕。如果输入用户名和密码,则应显示我的主页片段,否则应显示登录屏幕。如何使用共享首选项执行此操作?谁能帮我? 以下是我的代码:
LOGINFRAGMENT:
public void setLoginScreen(String usename, String password) {
String userName = Mainactivity._sharedPreferences.getString("userName", "null");
Editor editor = Mainactivity._sharedPreferences.edit();
editor.putString("userName", username);
editor.putString("Pass", password);
if (customerSNo.equals(username)) {
} else {
editor.putBoolean("loginStatus", false);
}
editor.commit();
}
如果为false,它将启动登录屏幕,但如果为true则如何启动主屏幕?
答案 0 :(得分:0)
如果我说得对,你想在用户没有登录时显示Login Fragment,并在他没有登录时将他引导到Home Fragment。
您需要实施的内容: 1)应用程序启动后,在您的MainActivity(我想它管理您的片段)中检查用户是否已登录:
String userName = sharedPreferences.getString("userName", null);
2)如果它不是空的,我们假设用户的授权是有效的,我们可以显示HomeFragment :(此代码在MainActivity中)https://developer.android.com/guide/components/fragments.html?hl=en
HomeFragment fragment = new HomeFragment();
fragmentTransaction.add(R.id.fragment_container, fragment);
fragmentTransaction.commit();
3)否则,(如果没有用户名)显示LoginFragment(如上例所示)
4)在用户点击“登录”的LoginFragment中按钮,从表单中获取数据(登录名和密码),验证它是否有效,将用户名添加到SharedPreferences(这样,下次当您的应用程序启动时,它将知道用户并指示他HomeFragment)。
sharedPreferences.edit().putString("userName", username).commit();
5)验证登录数据并将其存储在SharedPreferences中后,您需要显示HomeFragment(如上图所示)。
建议的方法仅适用于测试项目目的,仅通过共享首选项中的用户名值确定用户登录状态不是好的做法。
答案 1 :(得分:0)
您可以创建一个功能来检查共享首选项中的登录状态,如果状态为true,则启动活动的启动意图不会触发意图并要求登录
//inside onCreate()
setContentView(R.layout.name_of_xml);
//initialize your shared preferences object
//call to login check function
//rest of code.....
创建一个这样的函数:
private void checkLogin(){
if(sharedPreferences.getBoolean("status",false)){
//(if true) , i.e user is already logged in
//fire intent for home activity or
//begin home fragment transaction
} else{
//(if false),i.e user is not logged in
//fire intent for login activity or
//begin home fragment transaction
}
}