如何保存数值和密钥等数据?

时间:2017-11-22 16:45:38

标签: android sharedpreferences

我想构建一个应用来报告收入和支出。 而且我想保留数据,比如有多少钱,时间和方式。 并构建像1 cola = -1.5 $之类的结构化类别。当我关闭应用程序并重新启动手机时,数据仍然保存。我只是一个初学者,所以我陷入了保持数据的步骤

现在我要做的是使用SharedPreferences来节省预算,然后在TextView中打印它。它不起作用。

我的活动:

public class Report extends AppCompatActivity {

Button mButton1;
EditText mEdit;
TextView mText;
Button mButton;

SharedPreferences menaPref;
SharedPreferences.Editor editor;


public static final String MY_PREFS_NAME = "My Money";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_report);

    mButton = (Button) findViewById(R.id.B_GetMoney);
    mEdit = (EditText) findViewById(R.id.T_InputMoney);
    mText = (TextView) findViewById(R.id.textView);
    mButton1 = (Button) findViewById(R.id.B_try);


    mButton.setOnClickListener(


            new View.OnClickListener() {
                public void onClick(View view) {
                    String value = mEdit.getText().toString();
                    ;


                    SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); // 0 - for private mode
                    SharedPreferences.Editor editor = pref.edit();

                    editor.putString("My Money", value);
                    String Show_My_Money = pref.getString("My Money", null);

                    mText.setText(Show_My_Money);


                }

            });

}

}

3 个答案:

答案 0 :(得分:0)

您需要先.commit().apply()对编辑器进行更改后再对其进行更改。

editor.putString("My Money", value);
editor.commit()
pref.getString("My Money", null);

答案 1 :(得分:0)

您必须使用commit()或apply()来保存数据;)

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); // 0 - for private mode
                    SharedPreferences.Editor editor = pref.edit();

                editor.putString("My Money", value);
                editor.commit();

请参阅此文档:

https://developer.android.com/reference/android/content/SharedPreferences.Editor.html

答案 2 :(得分:0)

创建一个PrefHelper类

{2, 5}

只是为了读写而使用这些方法

public class PrefHelper{

private static final String PREF_NAME = "my_pref";

public static final String MY_MONEY= "my_money";
// put your others key here


Preferences() {
}

public static void writeBoolean(Context context, String key, boolean value) {
    getEditor(context).putBoolean(key, value).commit();

}

public static boolean readBoolean(Context context, String key) {
    return getPreferences(context).getBoolean(key, false);
}

public static void writeString(Context context, String key, String value) {
    getEditor(context).putString(key, value).commit();
}

public static String readString(Context context, String key) {
    return getPreferences(context).getString(key, null);
}


private static SharedPreferences getPreferences(Context context) {
    return context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
}

private static SharedPreferences.Editor getEditor(Context context) {
    return getPreferences(context).edit();
}
}