即使在另一个 activity 中提交 sharedpreferences 实例后也没有获得第二名 activity

Not getting second activity even after Commiting shared preferences instance in Another activity

在 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 activity 中,我有一个简单的表单,例如输入 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 activity 而不是 SecondActivity。我搜索了这样的问题,但我没能解决这个问题。 我是共享偏好概念的新手。谢谢。

您没有使用相同的共享首选项。

在一个地方你使用这个

getSharedPreferences(MyPreferences, Context.MODE_PRIVATE);

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

PreferenceManager.getDefaultSharedPreferences(getBaseContext());

二选一并坚持下去