我希望在用户首次登录时将用户发送到我的Main Activicty。在这里,他们输入一个名称,我保存到Intent并单击按钮转到第二个活动。然后我在第二页显示Intent名称。
每次用户登录后,我都希望将它们直接发送到第二个活动。
我尝试通过向用户发送第二个活动来尝试读取名为loggedInOnceAlready的变量,以查看它是否存在于SharedPreferences中以及是否设置为true。如果它不存在,则创建它并将其设置为false,然后提出意图以将用户带到主活动。如果它存在且设置为false,则不执行任何操作并继续我的第二个活动。
在我的第二个Activity中首次登录完成后,将其设置为true并将其存储回我的SharedPreferences中。
我觉得这应该有用,但是在实施它时遇到了问题
首先是我的清单:
<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);
}
});
}
答案 0 :(得分:0)
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 ...
}