我有 2 个活动(为了清楚起见,活动 1 和 2),1 个显示 editTexts,2 个将这些 editTexts 转换为 viewTexts。当用户第一次打开应用程序时,我希望他们看到活动 1,但是当他们单击移动到活动 2 的按钮时,我希望应用程序被锁定到该活动中,如果他们重新启动应用程序,它应该在 2 上打开. 但是,如果他们单击活动 2 中的按钮,那么它应该返回活动 1 并停留在那里。我已经尝试使用布尔语句进行检查,然后使用 onClick 侦听器更新 sharedPreferences,但它继续进入活动 2 或崩溃。
我该怎么做?谢谢。
这是代码,但它不起作用。
var firstTime : Boolean = appSettingPrefs.getBoolean("FirstInstall", false)
if (firstTime){
var i = Intent(this , ViewActivity::class.java)
startActivity(i)
}else {
sharedPrefsEdit.putBoolean("FirstInstall", true)
sharedPrefsEdit.apply()
}
答案 0 :(得分:1)
让我们假设这是因为用户第一次打开应用程序时需要先登录,第二次他应该看到他的个人资料,点击注销按钮后应该可以看到登录屏幕。
var isLoggedIn : Boolean = appSettingPrefs.getBoolean("isLoggedIn", false)
if(firstTime){
var i = Intent(this , ProfileActivity::class.java)
startActivity(i)
}
else{
showLoginScreen()
//in your case show edittext that your are trying to read values.
}
当用户单击 LoginButton 时,将 SharedPrefs 更改为 true 并将用户移动到下一个活动 (ViewActivity)。
showLoginScreen(){
//Read values from the EditText and save them to use in next screen.
loginButton.setOnClickListener{
sharedPrefsEdit.putBoolean("isLoggedIn", true)
sharedPrefsEdit.apply()
var i = Intent(this , ProfileActivity::class.java)
startActivity(i)
}
}
在配置文件活动中,当用户单击注销按钮时,登录屏幕应该是可见的,可以这样做。
logout.setOnClickListener {
sharedPrefsEdit.putBoolean("isLoggedIn", false)
sharedPrefsEdit.apply()
var i = Intent(this , LoginActivity::class.java)
startActivity(i)
}
流量是这样的,
当用户打开应用程序时,首先检查 isLoggedIn
的值是否为真,然后直接将用户带到下一个屏幕(ScreenTwo)。
如果 isLoggedIn
为 false,则向用户显示 LoginScreen(ScreenOne),当用户单击登录按钮时,将 isLoggedIn
设为 true 并将其移至 ProfileActivity(SecondActivity)。
如果您有任何疑问,请在评论中告诉我。