我试图从另一个类调用一个布尔值来检查互联网连接。
调用代码是
public void submit_user(View view){
EditText editText = (EditText) findViewById(R.id.new_username);
String user_name = editText.getText().toString();
EditText pw = (EditText)findViewById(R.id.new_password);
String pwd = pw.getText().toString();
MyActivity my = new MyActivity();
if(my.isConnected()) {
//do something
}
}
布尔方法是:
public boolean isConnected(){
ConnectivityManager connMgr = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
return true;
}else{
return false;
}
}
错误消息:
FATAL EXCEPTION: main
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
Caused by: java.lang.IllegalStateException: System services not available to Activities before onCreate()
尝试发布错误消息,但不允许我提交。
新的,感谢帮助。提前谢谢。
理查德
答案 0 :(得分:1)
您不能将 新 与活动类一起使用。所以尝试以下方式。
使用静态方法,如
public static boolean isConnected(){
ConnectivityManager connMgr = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
return true;
}else{
return false;
}
}
然后直接访问,
if(MyActivity.isConnected()) {
//do something
}
或
创建对象,
MyActivity myActivity = ((MyActivity)getApplicationContext());
然后访问,
if(myActivity.isConnected()) {
//do something
}
谢谢。
答案 1 :(得分:0)
IllegalStateException:活动无法使用的系统服务 在onCreate()
之前
表示MyActivity
类扩展Activity并且当前未运行。
不是从类扩展Activity或使用其他应用程序主要组件(如Services,BroadcastRecivers,...)调用方法,而是创建一个普通的java类并传递调用者类的Context以从其他类访问System Service。将isConnected
方法更改为:
public boolean isConnected(Context mContext){
ConnectivityManager connMgr = (ConnectivityManager)mContext.
getSystemService(Context.CONNECTIVITY_SERVICE);
....
}
并将view.getContext()
或活动上下文传递给isConnected
方法:
MyActivity my = new MyActivity();
if(my.isConnected(view.getContext())) {
//do something
}
还从extends Activity
类
MyActivity
答案 2 :(得分:0)
public static boolean isConnected(Context context){
ConnectivityManager connMgr = (ConnectivityManager)
getSystemService(context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
return true;
}else{
return false;
}
}
将此方法放在简单的java类而不是Activity
中答案 3 :(得分:0)
在另一个类中使用该类名声明方法public static和access
例如ClassOne.java中的方法 并且您想在ClasssTwo.java
中使用from from classone只需使用ClassOne.isConnceted()