关闭应用后保存信息

时间:2012-11-19 13:00:11

标签: android xml android-linearlayout android-preferences

我一直试图为我的应用创建一个用户个人资料部分,用户输入他的信息(姓名,DoB,身高,体重等)并点击提交。在此之后,他将进入应用程序的主菜单。

我遇到的问题是,如果我关闭应用并再次运行,这显然会导致应用再次显示用户个人资料部分,并要求用户输入他的信息。

我一直试图寻找一种方法,让应用程序保存用户输入并记住的信息。因此,例如,当用户首次使用该应用程序时,他获取用户个人资料部分并输入他的信息。当用户关闭应用程序并再次打开它时,应立即将其带到主菜单。

我知道我可以通过首选项稍微实现这一点,但我宁愿使用普通的布局(LinearLayout),以便它为我提供更多选项,如TextView等。

有没有一种方法可以使用LinearLayout而不是Preferences来实现这一目标?

我也在考虑创建自定义偏好设置,但我发现的任何内容都没有特别有用。

提前致谢。

3 个答案:

答案 0 :(得分:1)

使用SharedPreferences

  1. 检查首次运行的应用程序并显示要输入用户个人资料的布局。

  2. 在共享首选项中首次运行后存储布尔标志,这将阻止您的配置文件屏幕再次显示。

  3. 查看Check if application is on its first run

    <强>更新

    将此FirstRun()代码放入主要活动onCreate()

    private void FirstRun()
    {
     SharedPreferences settings = this.getSharedPreferences(MainActivity.PREFS_NAME, 0);
     boolean firstrun = settings.getBoolean("firstrun", true);
     if (firstrun)
     {
      // Checks to see if we've ran the application b4
    
      SharedPreferences.Editor e = settings.edit();
      e.putBoolean("firstrun", false);
      e.commit();
      // Display User Profile Screen    
     }
    }
    

答案 1 :(得分:0)

使用sharedPreference以这种方式存储信息..

        final SharedPreferences pref1 = getSharedPreferences("myapp", MODE_PRIVATE);
        SharedPreferences.Editor editor = pref1.edit();
        editor.putString("userid", "success");
        editor.commit();

并从代码中获取它的值..

final SharedPreferences pref1 = getSharedPreferences("myapp", MODE_PRIVATE);
String str1= pref2.getString("userid", null);

或尝试使用SqliteDatabase或可能是Application Class ..这将存储您想要的信息。

答案 2 :(得分:0)

@Override
public boolean saveUserData(UserModel userModel, Context context) {


    email = userModel.getEmail();
    firstName = userModel.getFirstName();
    lastName = userModel.getLastName();
    twitterId = userModel.getTwitterId();

    SharedPreferences userData = context.getSharedPreferences(APP_NAME,
            Context.MODE_PRIVATE);
    SharedPreferences.Editor setUserDataPreference = userData.edit();

    setUserDataPreference.putString(EMAIL, email);
    setUserDataPreference.putString(FIRST_NAME, firstName);
    setUserDataPreference.putString(LAST_NAME, lastName);
    setUserDataPreference.putString(TWITTER_ID, twitterId);

    setUserDataPreference.commit();

    return true;
}




 @Override
        public UserModel getUserData(Context context) {
            UserModel userModel = new UserModel();

            SharedPreferences userData = context.getSharedPreferences(APP_NAME,
                    Context.MODE_PRIVATE);

            email = userData.getString(EMAIL, "");
            firstName = userData.getString(FIRST_NAME, "");
            lastName = userData.getString(LAST_NAME, "");
            twitterId = userData.getString(TWITTER_ID, "");


            userModel.setEmail(email);
            userModel.setFirstName(firstName);
            userModel.setLastName(lastName);
            userModel.setTwitterId(twitterId);

            return userModel;
        }