我的问题是。我有一个微调器和微调器中的每个选项都应该在我的布局中编辑textview(微调器中的选项你可以在位置命令中看到),所以我用SharedPreferences制作了它,当我在微调器中选择一些选项时,这不是问题,所以textview被改变了,但是当我杀死我的应用程序然后重新打开时,textview是默认的(与我的布局中定义的相同)。那么问题在哪里呢?
第一个活动:
if(position == 4){
SharedPreferences myPrefsUv = CPUActivity.this.getSharedPreferences("myPrefsUv", MODE_PRIVATE);
SharedPreferences.Editor prefsEditorUv = myPrefsUv.edit();
prefsEditorUv.putString(maxUv, "1");
prefsEditorUv.commit();
}
if(position == 5){
SharedPreferences myPrefsUv = CPUActivity.this.getSharedPreferences("myPrefsUv", MODE_PRIVATE);
SharedPreferences.Editor prefsEditorUv = myPrefsUv.edit();
prefsEditorUv.putString(maxUv, "2");
prefsEditorUv.commit();
}
if(position == 6){
SharedPreferences myPrefsUv = CPUActivity.this.getSharedPreferences("myPrefsUv", MODE_PRIVATE);
SharedPreferences.Editor prefsEditorUv = myPrefsUv.edit();
prefsEditorUv.putString(maxUv, "3");
prefsEditorUv.commit();
}
if(position == 7){
SharedPreferences myPrefsUv = CPUActivity.this.getSharedPreferences("myPrefsUv", MODE_PRIVATE);
SharedPreferences.Editor prefsEditorUv = myPrefsUv.edit();
prefsEditorUv.putString(maxUv, "4");
prefsEditorUv.commit();
}
第二个活动:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_layout);
SharedPreferences myPrefsUv = UVActivity.this.getSharedPreferences("myPrefsUv", MODE_PRIVATE);
String prefNameUv = myPrefsUv.getString(maxUv, "");
if(prefNameUv == "1"){
final TextView textUv = (TextView)findViewById(R.id.text_max);
textUv.setText("100");
}
if(prefNameUv == "2"){
final TextView textUv = (TextView)findViewById(R.id.text_max);
textUv.setText("110");
}
if(prefNameUv == "3"){
final TextView textUv = (TextView)findViewById(R.id.text_max);
textUv.setText("120");
}
if(prefNameUv == "4"){
final TextView textUv = (TextView)findViewById(R.id.text_max);
textUv.setText("130");
}
}
谢谢。
您正在使用相同的键添加不同的值?这样我认为它总是会返回第一场比赛。我没有看到在你的代码"maxUv"被分配不同的值,根据不同的情况。
1)我建议您移动到if/else结构。这样,当你在正确的情况下,剩下的条件不会被计算。
2)在if/else构造之外调用以下行。你不需要在任何情况下都使用SharedPreferences Editor。
SharedPreferences myPrefsUv = CPUActivity.this.getSharedPreferences("myPrefsUv", MODE_PRIVATE);
SharedPreferences.Editor prefsEditorUv = myPrefsUv.edit();
在第二个活动中获取TextView textUv
也是如此。只获取一次引用,在所有情况下使用相同的引用。
3)在第二个活动中,您也比较字符串与==操作符,但字符串应该与equals()比较。
另一个人抢先了我一步。旧的等号。
您正在使用"=="比较字符串。您应该使用。equals:
进行比较。if(prefNameUv.equals("1"))
这是你所需要的东西。
此外,尽量不要声明首选项文件。在您的情况下,您不需要它,因此没有必要使它更复杂。
第一个活动:
SharedPreferences myPrefsUv = PreferenceManager.getDefaultSharedPreferences(CPUActivity.this);
第二活动:SharedPreferences myPrefsUv = PreferenceManager.getDefaultSharedPreferences(UVActivity.this);