2016-09-23 53 views
-3

所以我剛開始使用JAVA,我一直試圖將用戶名和密碼的簡單組合保存到SharedPreferences中。雖然我不太確定,但我明白這實際上是如何工作的。所以這裏是我現在的代碼;Android簡單的讀/寫數據的方式

public void init() { 
    EditText editText = (EditText) findViewById(R.id.password); 

    editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
     @Override 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
      boolean handled = false; 
      if (actionId == EditorInfo.IME_ACTION_SEND) { 
       EditText passwordText = (EditText) findViewById(R.id.password); 
       String Password = passwordText.getText().toString(); 

       EditText usernameText = (EditText) findViewById(R.id.username); 
       String Username = usernameText.getText().toString(); 

       SaveData(Username, Password); 
       handled = true; 
      } 
      return handled; 
     } 
    }); 
} 


private void SaveData(String Username, String Password) { 

    SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPref.edit(); 
    editor.putString(getString(R.string.saved_high_score), newHighScore); 
    editor.commit(); 
} 

現在當然這是行不通的,因爲我沒有任何getActivity(),但我不知道那是什麼應該是什麼?否則,我如何保存我發送給該功能的已有數據。

我的理想結果是能夠從其他活動獲取用戶名和密碼。現在我寧願不使用本地文件,但堅持使用SharedPreferences。

非常感謝提前!

+1

我想你應該首先學習'如何處理Android中的SharedPreferences?' –

+0

http://stackoverflow.com/questions/30310062/android-cannot-write-object-to-file/30310632#30310632 – kamokaze

回答

2

嗨創建一個類似下面的通用類,無論你想在共享偏好中存儲值,你都可以使用它來存儲特定數據類型。

import android.content.Context; 
    import android.content.SharedPreferences; 

    public class SharedPrefManager { 

     public static SharedPreferences getSharedPref(Context mContext) { 
      SharedPreferences pref = mContext.getSharedPreferences(Constants.SETTINGS, Context.MODE_PRIVATE); 

      return pref; 
     } 

     public static void setPrefVal(Context mContext, String key, String value) { 
      if(key!=null){ 
       SharedPreferences.Editor edit = getSharedPref(mContext).edit(); 
       edit.putString(key, value); 
       edit.commit(); 
      } 
     } 

     public static void setIntPrefVal(Context mContext, String key, int value) { 
      if(key!=null){ 
       SharedPreferences.Editor edit = getSharedPref(mContext).edit(); 
       edit.putInt(key, value); 
       edit.commit(); 
      } 
     } 

     public static void setLongPrefVal(Context mContext, String key, Long value) { 
      if(key!=null){ 
       SharedPreferences.Editor edit = getSharedPref(mContext).edit(); 
       edit.putLong(key, value); 
       edit.commit(); 
      } 
     } 

     public static void setBooleanPrefVal(Context mContext, String key, boolean value) { 
      if(key!=null){ 
       SharedPreferences.Editor edit = getSharedPref(mContext).edit(); 
       edit.putBoolean(key, value); 
       edit.commit(); 
      } 
     } 


     public static String getPrefVal(Context mContext, String key) { 
      SharedPreferences pref = getSharedPref(mContext); 
      String val = ""; 
      try { 
       if (pref.contains(key)) 
        val = pref.getString(key, ""); 
       else 
        val = ""; 
      }catch (Exception e){ 
       e.printStackTrace(); 
      } 
      return val; 
     } 

     public static int getIntPrefVal(Context mContext, String key) { 
      SharedPreferences pref = getSharedPref(mContext); 
      int val = 0; 
      try { 
       if(pref.contains(key)) val = pref.getInt(key, 0); 
      }catch (Exception e){ 
       e.printStackTrace(); 
      } 
      return val; 
     } 

     public static Long getLongPrefVal(Context mContext, String key) { 
      SharedPreferences pref = getSharedPref(mContext); 
      Long val = null; 
      try{ 
       if(pref.contains(key)) val = pref.getLong(key, 0); 
      }catch (Exception e){ 
       e.printStackTrace(); 
      } 
      return val; 
     } 

     public static boolean getBooleanPrefVal(Context mContext, String key) { 
      SharedPreferences pref = getSharedPref(mContext); 
      boolean val = false; 
      try{ 
       if(pref.contains(key)) val = pref.getBoolean(key, false); 

      }catch (Exception e){ 
       e.printStackTrace(); 
      } 
      return val; 
     } 
    } 

如果有任何疑問,請詢問。

+0

它的工作原理完美無瑕,非常感謝你,它也看起來很乾淨! – killstreet

+0

Thankew ..如果它可以幫助你我可以得到upvote和接受這個答案 –

+0

我必須等待2分鐘以上接受它 – killstreet