Non-static method 'getSystemService(java.lang.String)' cannot be referenced from a static context,给出相应的代码
时间: 2024-10-12 10:01:08 浏览: 27
android-AppShortcuts-master.zip_Java编程_Java_
这个错误信息 "Non-static method 'getSystemService(java.lang.String)' cannot be referenced from a static context" 出现在Android编程中,意味着你在试图在一个静态上下文中调用了非静态的方法 `getSystemService(String)`。在Java中,静态方法属于类,而非类的实例,所以无法直接通过类名调用非静态方法。
例如,如果你在一个静态方法或静态初始化块中尝试获取应用的服务:
```java
public class MyClass {
// 这里是一个静态方法
public static void myStaticMethod() {
Context context = MyClass.getSystemService(ContextCompat.SERVICE_NAME); // 错误:不能在这里调用非静态方法
}
}
// 正确的做法是在类的实例上调用该方法
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Context appContext = getApplicationContext();
MyClass.myStaticMethod(appContext.getSystemService(ContextCompat.SERVICE_NAME));
}
}
```
要在静态上下文引用非静态方法,你需要先创建一个类的实例,并通过那个实例来调用它。
阅读全文