我做了一个“公共空白”功能,我现在如何在另一个活动中调用它?

时间:2013-12-11 22:49:15

标签: java android

我以前从未使用过public,但现在我需要在多个活动中使用一个函数,所以我不是在每个活动中创建该方法,而是将其公开,以便每个活动都可以访问它。但是我现在如何使用它呢?如果我只是在另一个活动中调用该方法,则它无法识别它,并且它不会为我提供导入它的选项。

这是方法:

public boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager 
          = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}

4 个答案:

答案 0 :(得分:5)

如果要从多个活动中使用isNetworkAvailable,则不应将其放在一个活动中,然后再从另一个活动中使用它。相反,您应该创建实用程序类。实用程序类通常是一个具有静态帮助程序方法的类,您可以在整个应用程序中使用它。

例如:

package com.example.util;

public static class NetworkUtils {
    public static boolean isNetworkAvailable(Context context) {
        ConnectivityManager connectivityManager 
              = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
        return activeNetworkInfo != null && activeNetworkInfo.isConnected();
    }
}

然后,在活动中,使用它:

NetworkUtils.isNetworkAvailable(this)

......或者如果你在一个片段中:

NetworkUtils.isNetworkAvailable(getActivity())

...或者如果你只是在一些回调中:

NetworkUtils.isNetworkAvailable(MyActivity.this)

答案 1 :(得分:2)

这是一个实例方法,因此,您需要一个对象来调用它(您的孩子Activity的一个实例)。这意味着如果调用它的类不是包含该方法的类,则需要传递该对象实例。这不是一个好主意。考虑将其static

public static boolean isNetworkAvailable(final ConnectivityManager connectivityManager) {
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}

然后你可以在没有任何对象实例和类名

的情况下调用
YourActivityClass.isNetworkAvailable((ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE));

另请考虑将此方法移至帮助程序类。

哦,你的方法不是public void,而是public boolean

答案 2 :(得分:1)

也许您可以将其移动到实用程序类,并将该方法定义为静态,示例代码如下(需要添加必要的导入)

public class Utility {
    public static boolean isNetworkAvailable(Context mc) {
        ConnectivityManager connectivityManager 
          = (ConnectivityManager) mc.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
        return activeNetworkInfo != null && activeNetworkInfo.isConnected();
    }
}

答案 3 :(得分:0)

两种不同的情景:

第一个选项

是在任何地方(在util类等中)创建类似于下面的静态方法:

public static boolean isNetworkAvailable(Context ctx) {
    NetworkInfo activeNetworkInfo = ((ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}

第二选项

是创建abstract Activity,例如:

package com.example.activities;

public abstract class MyActivity extends Activity{
    public final boolean isNetworkAvailable() {
        NetworkInfo activeNetworkInfo = ((ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
        return activeNetworkInfo != null && activeNetworkInfo.isConnected();
    }
}

并确保您的活动延长MyActivity。因此,您的活动可以随意使用isNetworkAvailable方法。