错误无法启动 Activity ComponentInfo:java.lang.IllegalStateException:系统服务在onCreate()之前对 Activity 不可用
我正在尝试分离代码和使用辅助类。 (创建不同的 Java 文件) 我所做的是创建一个在 list 中注册的 Activity Java 文件,但我没有注册以下类(Java 文件):
import android.app.Activity;
import android.location.LocationManager;
import android.net.ConnectivityManager;
....
public class DeviceMonitor extends Activity {
boolean laag=false;
int level=-1;
double batterylevel=-1;
public boolean GPSEnabled() {
final LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if ( !manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) { // NO GPS ENABLED
//ErrorMessage.append(R.string.enablegps);
//ErrorMessage.append("\n");
Log.d("StartPrepare","GPS DISABLED");
return false;
} else {
Log.d("StartPrepare","GPS ENABLED");
return true;
}
}
我删除了 OnCreate() 方法,这是否正确? 我是否应该在 Manifest 中注册,如果是,如何注册?
我从这样注册的 Activity 调用时收到以下错误:
DeviceMonitor MyDevice = new DeviceMonitor();
if (MyDevice.GPSEnabled()){gpsenabled=true;}else{gpsenabled=false;fout=true;}
错误:
E/AndroidRuntime(1912): java.lang.RuntimeException: Unable to start activity ComponentInfo{package}: java.lang.IllegalStateException: System services not available to Activities before onCreate()
任何人都可以给我一些帮助类的信息(我是 Java/Android 的新手)并且知道错误可能导致什么?我尝试添加 OnCreate() 方法,但没有帮助。
非常感谢!
最佳答案
不要这样做...
DeviceMonitor MyDevice = new DeviceMonitor();
DeviceMonitor
扩展了 Activity
,您永远不应使用 new
创建 Activity
的实例。 Android Activity
是一个特例类,不应将其视为普通 Java 类。
如果您想启动一个Activity
,您需要使用startActivity...)
或其他“启动”方法之一。
如果您想要一个“助手”类,只需创建一个不扩展任何内容的标准 Java 类即可。当您从主 Activity
创建它的实例时,在其构造函数中将 Activity
Context
传递给它,然后使用它来访问 Android 服务等. 示例...
public class DeviceMonitor {
Context mContext = null;
public DeviceMonitor (Context context) {
mContext = context;
}
}
编辑: 要创建您的助手并从您的主要 Activity
传递一个 Context
,请执行此操作...
// An Activity IS a Context so pass 'this'
DeviceMonitor MyDevice = new DeviceMonitor(this);
关于android - Helper 类 - 错误无法启动 Activity ComponentInfo :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8661729/