在MainActivity中,我测试了App是否第一次启动。 如果是,则启动Activity OneTime else SecondActivity。
public static final String MyPreferences = "MyPrefs";
public static final String Country_Name = "countryKey";
SharedPreferences sharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sharedPreferences =
getSharedPreferences(MyPreferences, Context.MODE_PRIVATE);
if(sharedPreferences.getBoolean("My_Pref",true))
{
Intent intent = new Intent(this,OneTime.class);
startActivity(intent);
}
else {
Intent intent = new Intent(this,SecondActivity.class);
startActivity(intent);
}
}
在OneTime活动中,我有一个简单的表单,例如输入CountryName,然后我改变了My_Pref实例,如下所示。
SharedPreferences sharedPreferences;
TextView country;
Button save;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.one_time);
country = (TextView) findViewById(R.id.editText);
}
public void savepref(View view) {
sharedPreferences = PreferenceManager.
getDefaultSharedPreferences(getBaseContext());
String text1 = country.getText().toString();
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("countryKey",text1);
editor.putBoolean("My_Pref",false);
editor.apply();
Intent intent = new Intent(this,SecondActivity.class);
startActivity(intent);
}
但即使在此之后当应用程序再次启动时,它将转到OneTime活动而不是SecondActivity。我搜索了这样的问题,但我没有把它排除在外。 我是共享偏好概念的新手。谢谢。
答案 0 :(得分:1)
您没有使用相同的共享偏好。
在一个地方你使用这个
getSharedPreferences(MyPreferences, Context.MODE_PRIVATE);
然后在另一个地方你使用这个
PreferenceManager.getDefaultSharedPreferences(getBaseContext());
选择其中一个并坚持下去