当前位置: 首页 > 知识库问答 >
问题:

如何用Kotlin中使用的共享首选项以编程方式刷新活动?

高嘉熙
2023-03-14

我对Kotlin和Android,以及开发一个使用共享首选项的项目还是新手。

但是,主活动根本不刷新。我是说,我都不知道怎么做。我希望我的主要活动刷新当我从登录活动返回。

到目前为止,它只在我关闭应用程序并重新打开时工作。会话可能缓存在共享首选项中。

我试图通过点击某些按钮来启动和完成活动(例如,当用户通过所有凭据时,点击登录按钮),但它没有工作。

 override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        
        val menu: Menu = navView.menu
        val target2: MenuItem = menu.findItem(R.id.miItem2)
        val target3: MenuItem = menu.findItem(R.id.miItem3)
        
        //region user session
        try{
            if(!SharedPrefManager.getInstance(this)!!.isLoggedIn()){
                target2.isVisible = false
                target3.isVisible = false
                Toast.makeText(applicationContext, "nie zalogowany", Toast.LENGTH_LONG).show()
            }
            else{
                target2.isVisible = true
                target3.isVisible = true
                Toast.makeText(applicationContext, "zalogowany", Toast.LENGTH_LONG).show()
            }
        }catch (e: NullPointerException){

        }
//endregion
    fun isLoggedIn(): Boolean{
        val sharedPreferences: SharedPreferences = mCtx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE)
        if(sharedPreferences.getString(KEY_USER_EMAIL, null) != null){
            return true

        }
            return false
    }
val btnLogInActivity : Button = findViewById(R.id.logButton)

        btnLogInActivity.setOnClickListener {
            val intent = Intent(this, LoginActivity::class.java)
            startActivity(intent)
        }
buttonLogin.setOnClickListener {
            userLogin()
            newMainActivity()
        }


    private fun newMainActivity(){
        val intent = Intent(this, MainActivity::class.java)
        startActivity(intent)
    }

如果你需要更多的代码来修复这个问题,请告诉我

共有1个答案

陆弘光
2023-03-14

只需在代码中添加finish()即可。使用以下代码更新方法

        btnLogInActivity.setOnClickListener {
            val intent = Intent(this, LoginActivity::class.java)
            startActivity(intent)
            finish()
        }

登录后:

    private fun newMainActivity(){
        val intent = Intent(this, MainActivity::class.java)
        startActivity(intent)
        finish()
    }
 类似资料:
  • 问题内容: 我在这个.java文件中有一个SharedPreference;在底部,您可以看到我将值保存到SharedPreferences GB_PREFERENCES_BENCH和GB_PREFERENCES_FLIES。如何在其他活动中使用这些值?请参阅第二个代码示例以了解如何使用它。 这是我要使用的方式;(特别是在on create方法中,将TextView的文本设置为SharePrefe

  • 我正在使用共享首选项为我的应用程序存储某些值。我想看看我的手机上实际存储信息的文件。我在Eclipse上找到了很多实现这一点的方法,但我正在Android Studio上调试。我的手机有根了。我读到拥有root访问权限对读取这些类型的文件很重要。如果没有办法,那么我将查找如何通过我的程序访问信息,然后输出到日志猫。希望,虽然,我可以直接在电话上查看文件,因为它要简单得多。多谢了。

  • 我的首选项活动显示了几个列表首选项。在启动此活动的类中,我监听SharedReferences上的任何更改,并使用getString(String键,String默认值)获取所选选项。 当我检索这个字符串时,我需要根据它是什么字符串执行某些操作。但是,我该如何使用字符串呢。如果是int,我可以使用switch case,但是我该怎么处理字符串呢? 除了使用if-else和String还有其他方法吗

  • 我想分享一个文件(. pdf,. apk等)使用分享意图,我搜索谷歌,但我只找到共享图像的代码

  • 我在我制作的闪屏页面中调用共享首选项 这是我的方法 顺便说一下,我不知道这一行是什么//??这是我的日志 正在执行热重启。。。正在将文件同步到为x86构建的Android SDK设备。。。1776ms内重新启动应用程序。I/flatter(8982):loadingScreen=true E/flatter(8982):[ERROR:flatter/lib/ui/ui\u dart\u state

  • 对于下面的代码,我正在尝试检索共享的首选项,我认为它保存正确,但当我回到登录屏幕时,所有的数据都消失了。我需要它留在我回到这个屏幕上。所以我在个人资料页面上输入姓名、年龄和id到三个单独的行中。然后按下save按钮,然后按下action Bar上的back转到前面的页面。当我回到个人资料页面时,我的信息应该还在那里,但它没有任何帮助?