从另一个类调用一个布尔方法

时间:2016-05-06 06:15:57

标签: android

我试图从另一个类调用一个布尔值来检查互联网连接。

调用代码是

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()

尝试发布错误消息,但不允许我提交。

新的,感谢帮助。提前谢谢。

理查德

4 个答案:

答案 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()