我想知道是否有人可以解釋我遇到的問題。下面是我目前放在我的每一個類來檢查,如果Android手機網絡可用的代碼段:通過外部非靜態類方法檢測android網絡
private boolean isNetworkAvailable() {
ConnectivityManager manager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
boolean isAvailable = false;
if(networkInfo != null && networkInfo.isConnected()) {
isAvailable = true;
}
return isAvailable;
}
這工作時,在每個類的底部放置一個私有方法非常好,然而,就DRY原理而言,這並沒有太大的影響,所以我試圖把它放在一個名爲'appHelpers'的外部類中,並將其公開化,然後每次我想要使用該方法時簡單地調用appHelpers類:
public boolean isNetworkAvailable() {
...
}
現在,如果我嘗試直接從它的類調用該方法,像這樣:
if(appHelpers.isNetworkAvailable()) {
...
}
我得到熟悉的「不能從類型appHelpers中對非靜態方法isNetworkAvailable()進行靜態引用」。但是,如果我試圖使該方法靜態內部appHelpers(),我得到下一個紅線「getSystemService(上下文...)這行的方面:
ConnectivityManager manager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
與錯誤報告爲」不能讓一個靜態引用從類型爲ContextWrapper的非靜態方法getSystemService(String)「。
我只是不能看到問題在這裏,我也不是更接近解決問題。有沒有人有這方面的知識?我提前致謝
優秀的東西,謝謝你,埃裏克!我認爲這是一個問題,我把它公開而不是私人 - 我不知道它是什麼,但上下文使我非常困惑。謝謝你的幫助。 –