我想给用户发送到我的主要Activicty他们登录的第一次。在这里,他们进入我保存到一个意向,并点击一个按钮转到第二个活动的名称。然后我在第二页上显示意图名称。检查是否保存使用偏好存在
每次用户登录后,我都希望直接将它们发送到第二个活动。
我试图通过发送用户到第二个活动尝试读取名为loggedInOnceAlready的变量,以查看它是否存在于SharedPreferences中,以及它是否设置为true。如果它不存在,创建它并将其设置为false,然后引发将用户带到主活动的意图。如果它存在并设置为false,则不执行任何操作并继续执行第二个活动。
第一次登录完成后,我的第二个活动,将其设置为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);
}
});
}
不应该将你在检查MainActivity SP ..如果真的进入SecondAct或留在MainAct。并且您的默认活动应该是MainAct。 – Dhina
是啊,这应该工作,应该代码工作,因为我有一次我周围改变它呢? – Coco12
应该..只要尝试,并得到回来,如果你被击中, – Dhina