如何从Android kotlin中的非活动类开始新的活动? [英] How to start a new activity from a non activity class in Android kotlin?

查看:57
本文介绍了如何从Android kotlin中的非活动类开始新的活动?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在尝试传递上下文,但这只是行不通所以我先用

I've been trying to pass the context but it just doesn't work so I declare it first using

var mContext: Context? = null

然后在我的一个函数(来自非活动类)中调用它

then in one of my function (from non activity class) I call it

val intent= Intent(mContext, NotificationActivity::class.java)
mContext?.startActivity(intent)

它在编码中没有显示错误,但是当我运行此应用程序时,它根本不起作用

It doesn't show error in coding but when I run this app, it just doesn't work

NotificationActivity是我要调用的类

NotificationActivity is the class that I want to call

推荐答案

您要做的就是这样.

,您可以像如果您执行的是onClick或使用适配器,则可以从其视图中获取上下文,例如

if you are performing onClick or using adapter then you can get Context from its View like

 Utils.startNewActivity(view.context,SecondActivity::class.java)









    class Utils {

        companion object {
            fun startActivity(context: Context, clazz: Class<*>) {

                val intent = Intent(context, clazz)

               // start your next activity

                context.startActivity(intent)

            }
        }

}

object Utils {

     fun startNewActivity(context: Context, clazz: Class<*>) {

            val intent = Intent(context, clazz)
// To pass any data to next activity
//            intent.putExtra("keyIdentifier", value)
// start your next activity
            context.startActivity(intent)

        }


}

具有构造函数的非活动类.

Non Activity Class with Constructor.!

 UtilsWithConstructor(this@MainActivity).startNewActivity(SecondActivity::class.java)

class UtilsWithConstructor(private val context: Context) {

      fun startNewActivity(clazz: Class<*>) {

    val intent = Intent(context, clazz)
    // start your next activity
    context?.startActivity(intent)

}


}

这篇关于如何从Android kotlin中的非活动类开始新的活动?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆