一次登录fragment活动

时间:2017-03-03 11:00:56

标签: java android

我是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则如何启动主屏幕?

2 个答案:

答案 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
    }
}