程序问答   发布时间:2022-05-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何使用 kotlin 中使用的共享首选项以编程方式刷新活动?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

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

开发过程中遇到如何使用 kotlin 中使用的共享首选项以编程方式刷新活动?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何使用 kotlin 中使用的共享首选项以编程方式刷新活动?的解决方法建议,希望对你解决如何使用 kotlin 中使用的共享首选项以编程方式刷新活动?有所启发或帮助;

我对 Kotlin 和 AndroID 还是个新手,正在开发一个使用共享首选项的项目。

我有多个活动,用户必须登录才能使用主活动的所有功能。

主活动有一个菜单抽屉,菜单项很少。第一个是将用户重定向到登录活动。其余菜单项在用户登录前会隐藏。

流程如下: 从 Main Activity 开始 -> 应用程序检查用户是否已登录 -> 如果没有,您必须登录 -> 转到登录活动 -> 登录 -> 然后返回主活动。

但是,主要活动根本不刷新。我的意思是,我什至不知道该怎么做。当我从登录活动返回时,我希望我的主要活动刷新。

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

我尝试通过单击某些按钮来启动和完成 Activites(例如,当用户通过所有凭据时单击登录按钮后),但它不起作用。

以下代码在主活动开始时检查用户是否已登录

 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

还有函数 isLoggedIn():

    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)
        }

这是登录活动中的代码(userLogin 函数在此上下文中并不重要):

buttonLogin.setonClickListener {
            userLogin()
            newMainActivity()
        }


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

附言。如果您需要更多代码来解决问题,请告诉我

解决方法

您只需在代码中添加 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()
    }

大佬总结

以上是大佬教程为你收集整理的如何使用 kotlin 中使用的共享首选项以编程方式刷新活动?全部内容,希望文章能够帮你解决如何使用 kotlin 中使用的共享首选项以编程方式刷新活动?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。