Android Kotlin 在其他 Activity 中调用函数

标签 android function android-activity kotlin

我在其他Activity中调用了MainActivity的一个函数,应用程序关闭并显示如下错误,请帮助解决这个问题。

MainActivity 函数:

fun checkInternet():Boolean {
    val cm = baseContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
    val networkInfo = cm.activeNetworkInfo
    if (networkInfo != null && networkInfo.isConnected) {

        alertPopUp("internet ok", "")
        return true
    }
    else {
        val title = getString(R.string.No_Internet)
        val message = getString(R.string.need_internet_for_service)
        alertPopUp(title, message)

        return false
    }

}

在其他 Activity 中调用此函数:

var internetStatus:Boolean = MainActivity().checkInternet()

错误信息:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference at com.gph.qpon.MainActivity.checkInternet(MainActivity.kt:148) at com.gph.qpon.qponClickedActivity.onCreate(qponClickedActivity.kt:32)

最佳答案

我宁愿将所有逻辑提取到不同的助手或实用程序类。如果您要重用它,将它放在 Activity 中是一个很大的错误。一个非常巧妙的解决方案可能是拥有一个 ConnectivityUtils 实用程序类,例如著名的 iosched project has。 ,只是将应用程序上下文传递给它:

/**
 * Utility methods for dealing with connectivity
 */
object ConnectivityUtils {
  fun isConnected(context: Context): Boolean {
    val connectivityManager = context.applicationContext.getSystemService(
        Context.CONNECTIVITY_SERVICE) as ConnectivityManager
    val activeNetworkInfo = connectivityManager.activeNetworkInfo
    return activeNetworkInfo != null && activeNetworkInfo.isConnectedOrConnecting
  }
}

然后,您只需在任何 Activity 中调用它,如下所示:

ConnectivityUtils.isConnected(this)

关于Android Kotlin 在其他 Activity 中调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50817655/

相关文章:

java - 在android中解析JSON返回null对象

function - 我可以定义一个最大值函数 f(x) 来分配给参数 x

javascript - 在 if 语句 block 中使用 let 定义尚 undefined variable 的替代方法是什么?

android - 在方向更改时重新创建 Activity 时,媒体播放器不会加载

java - 关闭/重新启动 TabHost 中的 Activity

android - 如何从文本框android存储值?

android - 如何围绕按钮实现圆形进度指示器?

Android Deeplinking 不适用于多种方案

android - 如何设置 PopupMenu 样式?

jQuery 从 .each() 中的函数返回未定义的字符串