다른 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
}
}
다른 활동에서이 함수를 호출하십시오.
var internetStatus:Boolean = MainActivity().checkInternet()
에러 메시지:
원인 : java.lang.NullPointerException : com.gph.qpon.MainActivity.checkInternet의 null 개체 참조에서 가상 메서드 'java.lang.Object android.content.Context.getSystemService (java.lang.String)'호출 시도 (MainActivity.kt : 148) at 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
}
}
그런 다음 다음과 같은 활동 내에서 호출하면됩니다.
ConnectivityUtils.isConnected(this)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다