如何在活动之间切换和保存? (科特林)

时间:2021-04-02 02:47:11

标签: android kotlin

我有 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()
    }

1 个答案:

答案 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)。

如果您有任何疑问,请在评论中告诉我。