如何从 Android kotlin 中的非活动类开始新活动?

use*_*r20 2 java notifications android kotlin

我一直在尝试传递上下文,但它不起作用,所以我首先使用

var mContext: Context? = null
Run Code Online (Sandbox Code Playgroud)

然后在我的一个函数中(来自非活动类)我称之为

val intent= Intent(mContext, NotificationActivity::class.java)
mContext?.startActivity(intent)
Run Code Online (Sandbox Code Playgroud)

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

NotificationActivity 是我要调用的类

Ati*_*Asi 5

你所要做的就是这样。

你可以像使用 Kotlin 的非活动示例一样使用它

 Utils.startNewActivity(this,SecondActivity::class.java)


 Utils.startNewActivity(this@MainActivity,SecondActivity::class.java)
Run Code Online (Sandbox Code Playgroud)

如果您正在执行 onClick 或使用适配器,那么您可以从其视图中获取上下文,例如

 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)

            }
        }

}
Run Code Online (Sandbox Code Playgroud)

或者

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)

        }


}
Run Code Online (Sandbox Code Playgroud)

带构造函数的非活动类。!

 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)

}


}
Run Code Online (Sandbox Code Playgroud)