即使在另一个活动中提交共享首选项实例后,也没有获得第二个活动

时间:2015-02-24 14:26:41

标签: android sharedpreferences

在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。我搜索了这样的问题,但我没有把它排除在外。 我是共享偏好概念的新手。谢谢。

1 个答案:

答案 0 :(得分:1)

您没有使用相同的共享偏好。

在一个地方你使用这个

getSharedPreferences(MyPreferences, Context.MODE_PRIVATE);

然后在另一个地方你使用这个

PreferenceManager.getDefaultSharedPreferences(getBaseContext());

选择其中一个并坚持下去