错误无法启动活动ComponentInfo:java.lang.IllegalStateException:onCreate()之前的活动不可用的系统服务
我正在尝试分离代码和使用辅助类。 (创建不同的Java文件) 我所做的是创建一个在Manifest中注册的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()方法,这是正确的吗? 我是否应该在清单中注册,如果是,如何?
我从注册的Activity调用时收到以下错误:
DeviceMonitor MyDevice = new DeviceMonitor();
if (MyDevice.GPSEnabled()){gpsenabled=true;}else{gpsenabled=false;fout=true;}
错误:
E / AndroidRuntime(1912):java.lang.RuntimeException:无法启动 活动 ComponentInfo {包}: java.lang.IllegalStateException:系统服务不可用 onCreate()之前的活动
任何能给我一些关于帮助程序类的人(我在Java / Android中都是新的)并且有任何线索错误可能导致什么?我尝试添加OnCreate()方法,但没有帮助。
非常感谢!
答案 0 :(得分:1)
不要这样做......
DeviceMonitor MyDevice = new DeviceMonitor();
DeviceMonitor
扩展Activity
,您绝不应使用Activity
创建new
的实例。 Android Activity
是一个特殊情况类,不应该被视为普通的Java类。
如果你想开始使用Activity
,你需要使用startActivity...)
或其他“开始”方法之一。
如果你想要一个'helper'类,只需创建一个不扩展任何东西的标准Java类。当您从主Activity
创建实例时,请在其构造函数中将Activity
Context
传递给它,然后使用它来访问Android服务等。示例...
public class DeviceMonitor {
Context mContext = null;
public DeviceMonitor (Context context) {
mContext = context;
}
}
编辑:要创建帮助者并从主Context
传递Activity
,请执行此操作...
// An Activity IS a Context so pass 'this'
DeviceMonitor MyDevice = new DeviceMonitor(this);
答案 1 :(得分:0)
您需要申报
boolean GPSEnabled
在您的类或服务中调用onCreate()方法之后。