正在使用onBind方法,无法启动活动nullpointerexception Android

正在使用onBind方法,无法启动活动nullpointerexception Android,android,service,nullpointerexception,Android,Service,Nullpointerexception,我第一次在Android上使用服务,我阅读了所有文档和示例,我想从activity中实现绑定服务,我的服务扫描可用的wifi网络,我的activity获得wifi列表,但我被卡住了,我不知道我的错误在哪里,我的日志说无法启动activity nullpointerexception。舱单正常,有效性和服务在不同的包裹上。这里是我的代码:活动,然后是服务 public class StarterService extends Activity { final String tag =

我第一次在Android上使用服务,我阅读了所有文档和示例,我想从activity中实现绑定服务,我的服务扫描可用的wifi网络,我的activity获得wifi列表,但我被卡住了,我不知道我的错误在哪里,我的日志说无法启动activity nullpointerexception。舱单正常,有效性和服务在不同的包裹上。这里是我的代码:活动,然后是服务

 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();