我以前从未使用过public,但现在我需要在多个活动中使用一个函数,所以我没有在每个活动中创建方法,而是将其公开,以便每个活动都可以访问它。但是我现在该如何使用它呢?如果我只是在另一个活动中调用该方法,它不会识别它,也不会给我导入它的选项
这是一种方法:
public boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
如果你想从多个活动中使用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)
这是一个实例方法,因此,您需要一个对象来调用它(您的子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
。
也许您可以将其移动到一个实用程序类中,并将方法定义为静态,示例代码如下(需要添加必要的导入)
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();
}
}
两种不同的场景:
第一个选项
是在任意位置(在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
方法。