2017-01-31 30 views
1

共有プリファレンスを使用して編集テキストの値を保存しようとしていますが、SharedPreferences()の値を別のアクティビティ。ここSharedPreferences()を使用して値を格納し、別のアクティビティに格納値を取得する方法

+2

何か試しましたか?任意のコード? –

+0

値を渡そうとしている次のアクティビティですか? – OBX

+0

はい私は試みた。私はSharedPreferencesに値を格納する方法を知っていますが、格納された値を取得する方法はわかりません。 –

答えて

-1

まずintialize SharedPreferences

final SharedPreferences preferences = PreferenceManager 
       .getDefaultSharedPreferences(ApplicationLoader.applicationContext); 

あなたは、この使用することができます保存するには:別のクラス内の値を取得するために、次に

SharedPreferences.Editor editor = preferences.edit(); 
editor.putString("editText", yourEditText.getText().toString()); 
editor.commit(); 

を、あなたが使用できます。

String editText = preferences.getString("editText", ""); 

第2の値""は、デフォルト値。editTextが以前に保存されていない場合は、空のStringが返されます。

+0

私は最終的なSharedPreferencesプリファレンスを設定する必要があります= PreferenceManager .getDefaultSharedPreferences(ApplicationLoader.applicationContext); 私が価値を得ようとしているすべての活動について? –

+0

はい、あなたはそれを行うことができます! –

+0

保存された値を取得できません –

0
// store the value in preference store 

    SharedPreferences sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE); 
    Editor editor = sharedpreferences.edit(); 
    editor.putString("key", "value"); 
    editor.commit(); 

// get the value from preference store 

    String name = sharedpreferences .getString("key", ""); 
+0

これは文字列を配置するコードですか? loginPrefsEditor。putString( "username"、username); –

+0

String name = sharedpreferences .getString( "username"、 "");私が置く場合、私は格納された値を取得することができるだろう。 –

+0

はい、また、loginPrefsEditor.commit()ステートメントを使用して値を保存する必要があります。 –

0

は私の試みで、SF

のクラス
public class SFData { 

public static SharedPreferences sf_login; 
static SharedPreferences.Editor sf_login_edit; 

public static void loginSF(Context ctx){ 
    sf_login = ctx.getSharedPreferences("login", 0); 
    sf_login_edit = sf_login.edit(); 
} 

public static void loginSFStore(Map<String, Object> mapData){ 
    loginSFClear(); 
    for (Map.Entry<String, Object> entry : mapData.entrySet()) { 
     String keyName = entry.getKey(); 
     Object value = entry.getValue(); 
     if (value instanceof String) { 
      sf_login_edit.putString(keyName, (String) value); 
     } 
     else if (value instanceof Boolean) { 
      sf_login_edit.putBoolean(keyName, (boolean) value); 
     } 
     else if (value instanceof Integer) { 
      sf_login_edit.putInt(keyName, (int) value); 
     } 
    } 
    sf_login_edit.putBoolean("isLogin", true); 
    sf_login_edit.commit(); 
} 

public static void loginSFClear(){ 
    sf_login_edit.clear(); 
    sf_login_edit.commit(); 
} 

} 

に使用 Boolean login = SFData.sf_login.getBoolean("isLogin", false); のサンプルを作成するには、さらに複雑に得ることができますアプリケーションで作業している場合は、あなたのコード

+0

私はSharedPreferencesにユーザー名を保存すれば、どのアクティビティでも使用できますか? SharedPreferencesの限界は何ですか?アプリケーションを閉じるとユーザー名は消去されますか? –

+0

アプリのクリアキャッシュデータが設定されるまで残っています –

+0

これから試してみます –

1

に適応してください途中で共有設定を集中管理する方がよいでしょう。だから私はこのような共有設定のためのクラスを作成することをお勧め:あなたの活動で

Javaクラス

//SharedPreferences manager class 
public class SharedPrefs { 

//SharedPreferences file name 
private static String SHARED_PREFS_FILE_NAME = "my_app_shared_prefs"; 

//here you can centralize all your shared prefs keys 
public static String KEY_MY_SHARED_BOOLEAN = "my_shared_boolean"; 
public static String KEY_MY_SHARED_FOO = "my_shared_foo"; 

//get the SharedPreferences object instance 
//create SharedPreferences file if not present 


private static SharedPreferences getPrefs(Context context) { 
    return context.getSharedPreferences(SHARED_PREFS_FILE_NAME, Context.MODE_PRIVATE); 
} 

//Save Booleans 
public static void putBoolean(Context context, String key, boolean value) { 
    getPrefs(context).edit().putBoolean(key, value).commit();  
} 

//Get Booleans 
public static boolean getBoolean(Context context, String key) { 
    return getPrefs(context).getBoolean(key, false); 
} 

//Get Booleans if not found return a predefined default value 
public static boolean getBoolean(Context context, String key, boolean defaultValue) { 
    return getPrefs(context).getBoolean(key, defaultValue); 
} 

//Strings 
public static void putString(Context context, String key, String value) { 
    getPrefs(context).edit().putString(key, value).commit(); 
} 

public static String getString(Context context, String key) { 
    return getPrefs(context).getString(key, ""); 
} 

public static String getString(Context context, String key, String defaultValue) { 
    return getPrefs(context).getString(key, defaultValue); 
} 

//Integers 
public static void putString(Context context, String key, int value) { 
    getPrefs(context).edit().putInt(key, value).commit(); 
} 

public static int getInt(Context context, String key) { 
    return getPrefs(context).getInt(key, 0); 
} 

public static int getInt(Context context, String key, int defaultValue) { 
    return getPrefs(context).getInt(key, defaultValue); 
} 

//Floats 
public static void putFloat(Context context, String key, float value) { 
    getPrefs(context).edit().putFloat(key, value).commit(); 
} 

public static float getFloat(Context context, String key) { 
    return getPrefs(context).getFloat(key, 0); 

あなたはSharedPreferencesを保存することがあり、このよう

が変数

//saving a boolean into prefs 
SharedPrefs.putBoolean(this, SharedPrefs.KEY_MY_SHARED_BOOLEAN, booleanVar); 
を保存します

このようにSharedPreferencesを取得することができます

//getting a boolean from prefs 
booleanVar = SharedPrefs.getBoolean(this,SharedPrefs.KEY_MY_SHARED_BOOLEAN); 

あなたはすべてのアプリケーション上で、時には異なる構造で、共有好みコードを飛散していないであろう。この方法は保存された値を取得します。 Context

+0

さて、私はそれを試してみるつもりです。私はまだアンドロイドスタジオについて学んでいます。私は現在、私の論文としてSMSを使ったオンライン注文アプリケーションに取り組んでいます。 –

+0

保存された値を取得する予定のアクティビティでSharedPreferencesを宣言する必要がありますか? プライベートSharedPreferences loginPreferences; プライベートSharedPreferences.Editor loginPrefsEditor; このようにしますか? –

+0

あなたのアクティビティでSharedPrefs(import com.yourdomain)をインポートするだけで、SharedPrefsという最初のコードセクションで新しいjavaクラス(com.yourdomain.yourapp-> New-> Java Classを右クリック)を作成する必要があります。 yourapp.SharedPrefs)を保存して、2番目のセクションに好きな値を保存して、上記の3番目のセクションのように回復してください – alexm

関連する問題