GPH*_*GPH 2 android function android-activity kotlin
我在其他 Activity 中调用 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
}
}
Run Code Online (Sandbox Code Playgroud)
在其他活动中调用此函数:
var internetStatus:Boolean = MainActivity().checkInternet()
Run Code Online (Sandbox Code Playgroud)
错误信息:
引起: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) 在 com.gph.qpon.qponClickedActivity.onCreate(qponClickedActivity.kt:32)
我宁愿将所有逻辑提取到不同的帮助程序或实用程序类。如果你要重用它,将它放在一个活动中是一个很大的错误。一个非常巧妙的解决方案可能是拥有一个ConnectivityUtils
像著名的iosched 项目那样的实用程序类,只需将应用程序上下文传递给它:
/**
* 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
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您只需要在任何活动中调用它,如下所示:
ConnectivityUtils.isConnected(this)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9188 次 |
最近记录: |