有没有人能解释一下为什么我收到这个错误:
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;
}
}发布于 2012-05-20 06:30:40
问题出在您的NetworkConnection类中,您从未调用过onCreate,而是尝试这样做:
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,而只是在构造函数或方法本身中传递上下文,因为这将使您能够访问这些方法:)
发布于 2012-05-20 06:25:08
将此添加到您的清单中:
<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;
}
}`
https://stackoverflow.com/questions/10669165
复制相似问题