0

という名前のメインパッケージomer.ludlowcastleと別のパッケージがありますomer.ludlowcastle.utils

私はこの関数を次のように書きましたomer.ludlowcastle.utils:

public boolean checkInternet (){
    final ConnectivityManager conMgr =  (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    final NetworkInfo activeNetwork = conMgr.getActiveNetworkInfo();
    if (activeNetwork != null && activeNetwork.isConnected()) {
        return true;
    } else {
        Toast.makeText(getApplicationContext(), "You are not connected to Internet", Toast.LENGTH_LONG).show();
        return false;
    }
}

そして、メインパッケージのアクティビティでこの関数を次のように使用します。

public void Login (View v){
    if(omer.ludlowcastle.utils.functions.checkInternet()){
        //do other stuff
    }

    else {
        //do other stuff
    }
}

しかし、中括弧内の行はif次のエラーを出します:

Cannot make a static reference to the non-static method checkInternet() from the type functions

これを解決するには?

4

5 に答える 5

1

メソッドを静的にします。

public static boolean checkInternet()

または、checkInternet関数が含まれるクラスのオブジェクトを取得し、そのcheckInternet()関数を呼び出しますが、静的メソッドを作成する方がおそらくリソース集約的ではありません。

于 2013-01-07T13:07:03.463 に答える
0

utils パッケージのメソッドを静的に設定する必要があります。

public static boolean checkInternet()

ユーティリティ クラスは静的メソッドを作成するためのものであり、状態を保存するものではないため、ユーティリティ クラスを作成する場合はメソッドを静的にする必要があります。一般的な使い方です。

于 2013-01-07T13:06:35.800 に答える
0

メソッドを変更して静的にします

public static boolean checkInternet (){
    final ConnectivityManager conMgr =  (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    final NetworkInfo activeNetwork = conMgr.getActiveNetworkInfo();
    if (activeNetwork != null && activeNetwork.isConnected()) {
        return true;
    } else {
        Toast.makeText(getApplicationContext(), "You are not connected to Internet", Toast.LENGTH_LONG).show();
        return false;
    }
}
于 2013-01-07T13:08:19.627 に答える
0

メソッドを静的にするだけです:

public static boolean checkInternet (){
    final ConnectivityManager conMgr =  (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    final NetworkInfo activeNetwork = conMgr.getActiveNetworkInfo();

    if (activeNetwork != null && activeNetwork.isConnected()) {
        return true;
    } else {
        Toast.makeText(getApplicationContext(), "You are not connected to Internet", Toast.LENGTH_LONG).show();
        return false;
    }
}
于 2013-01-07T13:09:00.987 に答える
0

メソッドが静的ではないため、型関数から非静的メソッド checkInternet() への静的参照を作成できません。次の 2 つのオプションがあります。

  1. クラス Functions とメソッド checkInternet() を static として宣言します。Utility クラスのメソッドなので、より適切な方法です。そのため、現在使用しているとおりに呼び出すことができます。

2.または、クラスのオブジェクトを次のように作成します

Functions funObj = new Functions();

そして、オブジェクトを次のように使用してメソッドを呼び出します

public void Login (View v){
    if(funObj.checkInternet()){
        //do other stuff
    }

    else {
        //do other stuff
    }
}

それが役に立てば幸い。

于 2013-01-07T13:09:13.810 に答える