android - Eclipse android首选项文件;无法读取键的值

标签 android eclipse sharedpreferences

我是 Android 编程的新手,我想为自己犯的任何错误道歉,因为我是德国人:)

我正在为我的学校编写应用程序。 在这个应用程序中,我试图制作一个可编辑的时间表,以便每个人都可以编写自己的个人时间表。我通过创建一个 SharedPreferences 文件来做到这一点,但是当我编辑这些值并查看它们是否已更改时,这些值只是“默认值”,而不是我在 中输入的值EditText 元素。

这是我的代码:

编辑 Activity

@SuppressLint("CommitPrefEdits")
public class MondayEditActivity extends Activity {
public static final String PREFS_NAME = "MyPreferencesFile";

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

    final EditText stunde1 = (EditText)findViewById(R.id.getStunde1); 
    //Stunde is german for hour
    final EditText stunde2 = (EditText)findViewById(R.id.getStunde2);
    // get Stunde = Edit Text element
    final EditText stunde3 = (EditText)findViewById(R.id.getStunde3);
    final EditText stunde4 = (EditText)findViewById(R.id.getStunde4);
    final EditText stunde5 = (EditText)findViewById(R.id.getStunde5);
    final EditText stunde6 = (EditText)findViewById(R.id.getStunde6);
    final EditText stunde7 = (EditText)findViewById(R.id.getStunde7);
    final EditText stunde8 = (EditText)findViewById(R.id.getStunde8);
    final EditText stunde9 = (EditText)findViewById(R.id.getStunde9);
    final EditText stunde10 = (EditText)findViewById(R.id.getStunde10);
    Button btn = (Button)findViewById(R.id.bestaetigen);

    btn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
            SharedPreferences.Editor editor = settings.edit();
            editor.putString("stunde1", stunde1.getText().toString());
            editor.putString("stunde2", stunde2.getText().toString());
            editor.putString("stunde3", stunde3.getText().toString());
            editor.putString("stunde4", stunde4.getText().toString());
            editor.putString("stunde5", stunde5.getText().toString());
            editor.putString("stunde6", stunde6.getText().toString());
            editor.putString("stunde7", stunde7.getText().toString());
            editor.putString("stunde8", stunde8.getText().toString());
            editor.putString("stunde9", stunde9.getText().toString());
            editor.putString("stunde10", stunde10.getText().toString());

            startActivity(new Intent(MondayEditActivity.this, MondayActivity.class));

        }
    });
   }

     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.monday_edit, menu);
        return true;
     }

}

这是应该在的Activity,但是只有“默认值”...

public class MondayActivity extends Activity {

    public static final String PREFS_NAME = "MyPreferencesFile";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_monday);
        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);

        TextView tvStunde1 = (TextView)findViewById(R.id.textviewstunde1);
        TextView tvStunde2 = (TextView)findViewById(R.id.textviewstunde2);
        TextView tvStunde3 = (TextView)findViewById(R.id.textviewstunde3);
        TextView tvStunde4 = (TextView)findViewById(R.id.textviewstunde4);
        TextView tvStunde5 = (TextView)findViewById(R.id.textviewstunde5);
        TextView tvStunde6 = (TextView)findViewById(R.id.textviewstunde6);
        TextView tvStunde7 = (TextView)findViewById(R.id.textviewstunde7);
        TextView tvStunde8 = (TextView)findViewById(R.id.textviewstunde8);
        TextView tvStunde9 = (TextView)findViewById(R.id.textviewstunde9);
        TextView tvStunde10 = (TextView)findViewById(R.id.textviewstunde10);

        tvStunde1.setText(settings.getString("stunde1", "-"));
        tvStunde2.setText(settings.getString("stunde2", "-"));
        tvStunde3.setText(settings.getString("stunde3", "-"));
        tvStunde4.setText(settings.getString("stunde4", "-"));
        tvStunde5.setText(settings.getString("stunde5", "-"));
        tvStunde6.setText(settings.getString("stunde6", "-"));
        tvStunde7.setText(settings.getString("stunde7", "-"));
        tvStunde8.setText(settings.getString("stunde8", "-"));
        tvStunde9.setText(settings.getString("stunde9", "-"));
        tvStunde10.setText(settings.getString("stunde10", "-"));



    }



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.monday, menu);
        return true;
    }

}

我希望你能理解我的问题并帮助我,我真的不知道该怎么办,我正在努力解决这个问题 3 个小时。

最佳答案

只需将以下行添加到您的onClick 方法中:

editor.commit();

或者,如果您仅支持 API 级别 11 及更高级别

editor.apply();

Just to clear things app:你的更改之前没有保存。您必须显式调用 apply()commit() 来保存更改。
来自 Docs :

Commit your preferences changes back from this Editor to the SharedPreferences object it is editing. This atomically performs the requested modifications, replacing whatever is currently in the SharedPreferences.

关于android - Eclipse android首选项文件;无法读取键的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26456163/

相关文章:

android - 没有环境模式就一直打开?或者进入环境时不变暗?

java - 设置 JFace 向导的大小

eclipse - JAXB 绑定(bind) XBRL 元素不起作用

android - Google 云端硬盘帐户选择器 onActivityResult resultCode 始终为 -1

android - Eclipse 有同一个 Android 设备的多个副本

android - HttpMessageNotReadableException : Could not read JSON: Unrecognized field using Spring for Android

java - 扩展/继承 Tomcat 项目

android - BackUpAgentHelperClass 没有被调用

Android Sharedpreferences 不会保存

Android 一种为一个/所有偏好触发 onSharedPreferenceChange() 的方法