[英]Android network connection
有人可以解釋為什么我收到錯誤:
java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.project/com.project.Deals}: java.lang.IllegalStateException: System services not available to Activities before onCreate()
當我使用下面的兩個類時,現在已經做了很多年了。 我很感激幫助
public class Deals extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView textview = new TextView(this);
textview.setText("This is the Artists tab");
setContentView(textview);
NetworkConnection nc = new NetworkConnection();
boolean networkAvail = nc.isNetworkConnAvail();
if (networkAvail == true){
}
}
};
public class NetworkConnection extends Activity {
/** Called when the activity is first created. */
public boolean isNetworkConnAvail() {
ConnectivityManager connMgr = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo != null)
return networkInfo.isConnected();
return false;
}
}
將此添加到您的清單:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
並刪除此:
extends Activity
在class NetworkConnection
更新
更好的想法是將您的代碼更改為:
public class Deals extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
boolean networkAvail = isNetworkConnAvail();
if (networkAvail == true){
//do something
}
}
public boolean isNetworkConnAvail() {
ConnectivityManager connMgr = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo != null)
return networkInfo.isConnected();
return false;
}
}
`
問題出在您從未調用onCreate的NetworkConnection類中,請嘗試以下方法:
public boolean isNetworkConnAvail(Context context) {
ConnectivityManager connMgr = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo != null)
return networkInfo.isConnected();
return false;
}
並從你的其他班級這樣稱呼它:
nc.isNetworkConnAvail(this);
或者在NetworkConnection的構造函數中調用超類的onCreate方法。 如果您只是為了能夠使用getSystemService而擴展Activity,那么您也可以不擴展Activity並且只在構造函數或方法本身中傳遞Context,因為這將使您可以訪問這些方法: )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.