如何在不同的活动中保存和获取SharedPreferences?

时间:2018-04-24 22:26:49

标签: android sharedpreferences

我一直在理解如何保存和阅读SharedPreferences。我试图保存四个单独的SharedPreferences,但由于我无法弄清楚如何做,我决定尝试使用一个简单的String。

在此代码中,我尝试在SharedPreferences中创建并保存字符串

        Button enrollNewStudent = (Button) findViewById(R.id.enrollStudentButton) ;

    enrollNewStudent.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View view){
            SharedPreferences prefs = getSharedPreferences(getString(R.string.testing), MODE_PRIVATE);
            SharedPreferences.Editor editor = getSharedPreferences(getString(R.string.testing), MODE_PRIVATE).edit();
            editor.putString("name", "Dave");
            editor.commit();
            startActivity(new Intent(MainActivity.this, AddNewStudent.class));
        }
    });

在接下来的部分中,我尝试阅读SharedPreferences并在第二个活动中设置TextView。

        Context context = this;
    SharedPreferences sharedPref = getSharedPreferences(getString(R.string.testing),MODE_PRIVATE);
    String toPutInTextView = sharedPref.getString(getString(R.string.testing), null);

    TextView textView = findViewById(R.id.exampleTextView);
    textView.setText(toPutInTextView);

当我运行此应用程序并单击按钮切换到第二个活动时,第二个活动上的TextView为空白。

有人看到这个有问题吗?我一直试图将我需要做的事情从Android开发者网站和其他问题拼凑在一起,但我无法让这个工作。这是一个大学项目。

1 个答案:

答案 0 :(得分:1)

问题是:sharedPref.getString(getString(R.string.testing), null)正在使用字符串getString(R.string.testing)作为键。但是,您拨打"putString()"时使用的密钥是" name"。所以你需要使用" name"作为getString()来电的密钥。

尝试:

String toPutInTextView = sharedPref.getString("name", "<default_value>");