我想稍微清理一下我的Main活动类,并将一些代码转移到其他类,以使我的代码更容易阅读。 我遇到了这样的情况
MainActivity Class
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
getData("2B1A4D3C");
}
public void getData(String Hex) {
Static staticClass = new Static();
if (staticClass.isNetworkAvailable(MainActivity.this) == true) {
staticClass.setData(response);
}
}
}
第二课
class Static extends AppCompatActivity {
public boolean isNetworkAvailable(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager)
getSystemService(context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo =
connectivityManager.getActiveNetworkInfo();
if ( activeNetworkInfo != null ) {
return true;
} else {
return false;
}
}
当我通过这样的上下文时 - > isNetworkAvailable(MainActivity.this)我遇到了崩溃。并收到错误
在onCreate()
之前,活动无法使用系统服务
传递上下文的正确方法是什么?
答案 0 :(得分:1)
您需要使用:
ConnectivityManager connectivityManager = (ConnectivityManager)
context.getSystemService(context.CONNECTIVITY_SERVICE);
否则该调用实际上是Static.this.getSystemService(...)
,因为Static
实例是由您创建的而不是系统创建的,所以它不是有效的Context
。
但是在这种情况下,我认为Static
类没有任何理由扩展AppCompatActivity
所以你应该删除它。
答案 1 :(得分:0)
您收到错误是因为您已将Static类设为没有onCreate方法的活动。而不是使它成为一个简单的Java类,并通过函数参数将上下文传递给isNetworkAvailable方法。