2012-11-19 50 views
0

我一直在試圖爲我的應用程序創建一個用戶配置文件部分,用戶輸入他的信息(名稱,DoB,身高,體重等)並點擊提交。之後,他被帶到應用程序的主菜單。關閉應用程序後保存信息

我遇到的問題是,如果我關閉應用程序並再次運行它,這顯然會導致應用程序再次顯示用戶配置文件部分,並要求用戶輸入他的信息。

我一直在尋找一種方式,在應用程序中保存用戶輸入並記住的信息。例如,當用戶第一次使用應用程序時,他會獲取用戶配置文件部分並輸入他的信息。當用戶關閉應用程序並再次打開它時,應該立即讓他直接進入主菜單。

我知道我可以做到這一點略有偏好,但我寧願用一個正常的佈局(LinearLayout中),因此它給了我更多的選項,比如TextView的等

有沒有一種方法,我可以實現這隻使用LinearLayout而不是首選項?

我也一直在尋找創建自定義首選項,但沒有發現我發現的東西特別有用。

在此先感謝。

+0

所以你只是想在屏幕上顯示它,而不想將它保存在數據庫中? –

+0

是的,我想向用戶顯示他輸入所需信息的部分。然後,他輸入的信息應該被保存(以某種方式),以便我可以稍後使用這些信息做出決定,例如當他第二次打開應用程序時立即將用戶帶到主菜單。 –

回答

1

使用SharedPreferences

  1. 檢查首次運行的應用程序並顯示您想要輸入用戶配置文件的佈局。

  2. 存儲布爾標誌後首先運行共享首選項,這將阻止您的配置文件屏幕再次顯示。

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  
} 
} 
+0

如果我想存儲用戶輸入的信息,以便我可以稍後根據這些信息做出決定,該怎麼辦? –

+0

將這些信息存儲在'SharedPreference'中。 Android提供'SharedPreference'出於同樣的原因你需要什麼。 – user370305

+0

好的,謝謝。我現在只需要瞭解如何使用SharedPreference。是否有教程展示了使用SharedPreference和TextView和EditText的完整示例? –

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或可是應用程序類..這將存儲您想要的信息。

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; 
     }