0

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

我遇到的问题是,如果我关闭应用程序并再次运行它,这显然会导致应用程序再次显示用户配置文件部分并要求用户输入他的信息。

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

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

有没有一种方法可以让我只使用 LinearLayout 而不是 Preferences 来实现这一点?

我也一直在考虑创建自定义首选项,但我发现没有一个特别有用。

提前致谢。

4

3 回答 3

1

使用SharedPreferences.

  1. 检查应用程序的首次运行并显示您要输入用户配置文件的布局。

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

查看检查应用程序是否首次运行

更新:

将此FirstRun()代码放在您onCreate()Main Activity中。

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    
 }
}
于 2012-11-19T13:04:26.653 回答
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..这将根据需要存储信息。

于 2012-11-19T13:09:31.533 回答
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;
        }
于 2012-11-19T13:11:09.023 回答