检查保存首选项是否存在



我希望在用户第一次登录时将用户发送到我的主活动。在这里,他们输入一个名称,我将其保存到 Intent 中,然后单击一个按钮转到第二个活动。然后,我在第二页上显示意向名称。

每次用户在此之后登录时,我都希望将他们直接发送到第二个活动。

我通过将用户发送到第二个活动尝试来尝试读取一个名为 loggedInOnceAlready 的变量,以查看它是否存在于共享首选项中以及是否设置为 true。如果它不存在,请创建它并将其设置为 false,然后引发将用户带到主活动的意图。如果它存在且设置为 false,则不执行任何操作并继续我的第二个活动。

在我的第二个活动中完成第一次登录后,将其设置为 true 并将其存储回我的共享首选项中。

我觉得这应该有效,但在实施时遇到问题

首先是我的清单:

<activity
        android:name=".SecondActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_second" >

我的第二个活动:

 public class SecondActivity extends AppCompatActivity {  
String name;
TextView etWelcome;
String newName;
SharedPreferences sharedPrefences;
Boolean loggedInOnceAlready; 
  @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);
    sharedPrefences = PreferenceManager.getDefaultSharedPreferences(this);
    loadSavedPrefernce();
    Intent intent = getIntent();
    Bundle bundle = intent.getExtras();
    name = bundle.getString("name");
    etWelcome = (TextView)findViewById(R.id.tvWelcome);
    etWelcome.setText("Welcome " + name);
}
private void loadSavedPrefernce() {
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    if (loggedInOnceAlready = null){
        prefs.edit().putBoolean("loggedInOnceAlready", true).commit();
    }else {
        this.loggedInOnceAlready = false;
        savePreference(loggedInOnceAlready, "loggedInOnceAlready");
        Intent intent = new Intent(SecondActivity.this, MainActivity.class);
        startActivity(intent);
    }
}
private void savePreference(Boolean key, String value) {
    SharedPreferences.Editor editor = sharedPrefences.edit();
    editor.putBoolean("loggedInOnceAlready", false);
    editor.commit();
}

和我的主要活动:

public class MainActivity extends AppCompatActivity {
SharedPreferences sharedPrefences;
Boolean loggedInOnceAlready;
String name;
EditText etName;
Button btnGo;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    btnGo.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            name = etName.getText().toString();
            prefs.edit().putBoolean("loggedInOnceAlready", true);
           // loggedInOnceAlready = true;
            Intent intent = new Intent(MainActivity.this, SecondActivity.class);
            intent.putExtra("name", name);
            startActivity(intent);
        }
    });
}

contains (String key)检查首选项是否包含首选项。欲了解更多信息:http://developer.android.com/reference/android/content/SharedPreferences.html

例:

SharedPreferences sharedPrefs = getSharedPreferences("PREF_APP", Context.MODE_PRIVATE);
    if(!sharedPrefs.contains("loggedInOnceAlready")) {
        // Doesn't exist so create it
    }
     else {
        // Do Nothing (delete else) or go to MainActivity ...
    }

最新更新