正在使用onBind方法,无法启动活动nullpointerexception Android
我第一次在Android上使用服务,我阅读了所有文档和示例,我想从activity中实现绑定服务,我的服务扫描可用的wifi网络,我的activity获得wifi列表,但我被卡住了,我不知道我的错误在哪里,我的日志说无法启动activity nullpointerexception。舱单正常,有效性和服务在不同的包裹上。这里是我的代码:活动,然后是服务正在使用onBind方法,无法启动活动nullpointerexception Android,android,service,nullpointerexception,Android,Service,Nullpointerexception,我第一次在Android上使用服务,我阅读了所有文档和示例,我想从activity中实现绑定服务,我的服务扫描可用的wifi网络,我的activity获得wifi列表,但我被卡住了,我不知道我的错误在哪里,我的日志说无法启动activity nullpointerexception。舱单正常,有效性和服务在不同的包裹上。这里是我的代码:活动,然后是服务 public class StarterService extends Activity { final String tag =
public class StarterService extends Activity {
final String tag = "WifiConn:...";
//EditText txt;
WifiManager myWifi;
ScanService scan;
List<ScanResult> sRedes;
//private ScanService scan;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
doBindService();
scan=new ScanService();
//sRet.clear();
sRedes=scan.getWifi();
for (int i=0; i<sRedes.size(); i++)
{
ScanResult retS = sRedes.get(i);
// txt.append("resT: " + retS.SSID +" " + retS.BSSID + "\n");
Log.d(tag, "resT: " + retS.SSID +" " + retS.BSSID);
if (retS.SSID.equalsIgnoreCase("Red1"))
{
// txt.append("Red encontrada: " + retS.SSID +" " + retS.BSSID + "\n");
WifiConfiguration wc = new WifiConfiguration();
wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
wc.SSID = "\""+retS.SSID+"\"";
wc.BSSID = retS.BSSID;
wc.status = WifiConfiguration.Status.ENABLED;
wc.hiddenSSID = true;
int netID = myWifi.addNetwork(wc); // añade red
// txt.append("NetID"+ Integer.toString(netID) +"\n");
if(myWifi.enableNetwork(netID, true)) // Valida conexión
{
// txt.append("Estado conexión: Ok\n");
Log.d("Servicio", "Activado");
}
} else {
// txt.append("No encontrado: Ok\n");
Log.d("Servicio", "Activado");
//this.stopSelf();
}
}
}
private ServiceConnection mConnection=new ServiceConnection(){
public void onServiceConnected(ComponentName classname, IBinder binder){
scan=((ScanService.MyBinder)binder).getService();
Toast.makeText(StarterService.this, "Corriendo", Toast.LENGTH_SHORT).show();
}
public void onServiceDisconnected(ComponentName classname) {
scan= null;
}
};
protected void doBindService() {
bindService(new Intent(this, ScanService.class), mConnection, Context.BIND_AUTO_CREATE);
} }
我的日志
03-24 00:24:46.814: E/AndroidRuntime(20798): FATAL EXCEPTION: main
03-24 00:24:46.814: E/AndroidRuntime(20798): Process: red1.pe, PID: 20798
03-24 00:24:46.814: E/AndroidRuntime(20798): java.lang.RuntimeException: Unable to start activity ComponentInfo{wigo.pe/wigo.pe.StarterService}: java.lang.NullPointerException
03-24 00:24:46.814: E/AndroidRuntime(20798): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209)
03-24 00:24:46.814: E/AndroidRuntime(20798): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2269)
03-24 00:24:46.814: E/AndroidRuntime(20798): at android.app.ActivityThread.access$800(ActivityThread.java:139)
03-24 00:24:46.814: E/AndroidRuntime(20798): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
03-24 00:24:46.814: E/AndroidRuntime(20798): at android.os.Handler.dispatchMessage(Handler.java:102)
03-24 00:24:46.814: E/AndroidRuntime(20798): at android.os.Looper.loop(Looper.java:136)
03-24 00:24:46.814: E/AndroidRuntime(20798): at android.app.ActivityThread.main(ActivityThread.java:5102)
03-24 00:24:46.814: E/AndroidRuntime(20798): at java.lang.reflect.Method.invokeNative(Native Method)
03-24 00:24:46.814: E/AndroidRuntime(20798): at java.lang.reflect.Method.invoke(Method.java:515)
03-24 00:24:46.814: E/AndroidRuntime(20798): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
03-24 00:24:46.814: E/AndroidRuntime(20798): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
03-24 00:24:46.814: E/AndroidRuntime(20798): at dalvik.system.NativeStart.main(Native Method)
03-24 00:24:46.814: E/AndroidRuntime(20798): Caused by: java.lang.NullPointerException
03-24 00:24:46.814: E/AndroidRuntime(20798): at wigo.pe.StarterService.onCreate(StarterService.java:35)
03-24 00:24:46.814: E/AndroidRuntime(20798): at android.app.Activity.performCreate(Activity.java:5248)
03-24 00:24:46.814: E/AndroidRuntime(20798): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110)
03-24 00:24:46.814: E/AndroidRuntime(20798): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2173)
03-24 00:24:46.814: E/AndroidRuntime(20798): ... 11 more
您的
服务
实例很好。没有问题
问题是您没有初始化EditText
实例txt
。在使用txt
执行任何操作之前,在onCreate()方法中初始化它
另一件事,在初始化任何视图之前
使用“setContentView()”方法将布局设置为活动
在ScanService类中为ScanService生成构造函数
public ScanService() {
}
现在开始你的活动
scan = new ScanService();
sRedes=scan.getWifi();
哪一行是STARTSERVICE类的第35行?它是STATTION的,但我想STATTION的代码是可以的。。我在一个不同的应用程序中测试了它,但我不明白为什么我在试图连接服务时从扫描中得到空指针,你是说(int I=0;iIt'行txt.append(“NetID”+Integer.toString(NetID)+“\n”)我不知道为什么,或者我没有收到你的问题可能是getWifi()
甚至在扫描
正确初始化之前就被调用了。谢谢,但我的代码中没有使用EditText,它只是一个变量(抱歉,我应该清理它),这就是为什么我没有初始化任何txt,我想我忘了初始化ScanService()在活动中,但仍然出错。您应该使用StringBuilder
作为变量,而不是EditText
。如果您不初始化EditText
,则系统将抛出所得到的NullPointerException
。很抱歉,我取消了设置,但空指针不是用于EditText,我只是注释EditText和txt.append问题是在此之前,我的var sREDES从服务中获取null,不确定原因,可能是在连接状态上。我更新了代码还有另一行,您没有注释掉…这行是txt.append(“NetID”+Integer.toString(NetID)+“\n”)所以,在ScanService中,使ScanService像一个构造函数,但替换另一个构造函数?但在这方面,我没有看到任何构造函数。你是对的,我没有在活动中初始化scan=new ScanService();但仍然从sRET获取空指针。我把它放在StarterService:doBindService();scan=new ScanService();sRedes=scan.getWifi();for(int i=0;i
EditText txt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout_xml);
txt = (EditText) findViewById(R.id.edittext);
...........
}
public ScanService() {
}
scan = new ScanService();
sRedes=scan.getWifi();