Autore Topic: FATAL EXCEPTION: AsyncTask #2  (Letto 942 volte)

Offline Spagna

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy
  • Sistema operativo:
    windows 7
FATAL EXCEPTION: AsyncTask #2
« il: 12 Dicembre 2012, 16:14:46 CET »
0
Sto cercando di inserire dati a un DB remoto
Mi da questo errore:
FATAL EXCEPTION: AsyncTask #2
Non capisco dove sbaglio non càpisco!
Se mi date una mano per piacere
LogCat:
Codice: [Seleziona]
12-12 14:16:25.324: W/KeyCharacterMap(334): No keyboard for id 0
12-12 14:16:25.324: W/KeyCharacterMap(334): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
12-12 14:16:42.064: D/dalvikvm(334): GC_CONCURRENT freed 395K, 53% free 2780K/5831K, external 978K/1038K, paused 11ms+5ms
12-12 14:16:42.224: E/getpostresponse(334):  result= [{"logstatus":"1"}]
12-12 14:16:43.221: E/loginstatus(334): logstatus= 1
12-12 14:16:43.224: E/loginstatus(334): valido
12-12 14:16:43.244: E/onPostExecute=(334): ok
12-12 14:16:43.614: D/dalvikvm(334): GC_EXTERNAL_ALLOC freed 62K, 52% free 2873K/5959K, external 1021K/1038K, paused 62ms
12-12 14:16:53.494: W/KeyCharacterMap(334): No keyboard for id 0
12-12 14:16:53.494: W/KeyCharacterMap(334): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
12-12 14:16:57.895: D/dalvikvm(334): GC_CONCURRENT freed 258K, 50% free 2985K/5959K, external 1156K/1577K, paused 10ms+19ms
12-12 14:16:57.984: W/KeyCharacterMap(334): No keyboard for id 0
12-12 14:16:57.984: W/KeyCharacterMap(334): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
12-12 14:17:09.504: D/dalvikvm(334): GC_CONCURRENT freed 686K, 55% free 2746K/6087K, external 719K/1231K, paused 13ms+25ms
12-12 14:17:10.774: I/dalvikvm(334): Jit: resizing JitTable from 512 to 1024
12-12 14:17:17.514: D/dalvikvm(334): GC_CONCURRENT freed 336K, 54% free 2813K/6087K, external 900K/1231K, paused 11ms+6ms
12-12 14:17:24.364: W/dalvikvm(334): threadid=10: thread exiting with uncaught exception (group=0x40015560)
12-12 14:17:24.374: E/AndroidRuntime(334): FATAL EXCEPTION: AsyncTask #2
12-12 14:17:24.374: E/AndroidRuntime(334): java.lang.RuntimeException: An error occured while executing doInBackground()
12-12 14:17:24.374: E/AndroidRuntime(334):         at android.os.AsyncTask$3.done(AsyncTask.java:200)
12-12 14:17:24.374: E/AndroidRuntime(334):         at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
12-12 14:17:24.374: E/AndroidRuntime(334):         at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
12-12 14:17:24.374: E/AndroidRuntime(334):         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
12-12 14:17:24.374: E/AndroidRuntime(334):         at java.util.concurrent.FutureTask.run(FutureTask.java:138)
12-12 14:17:24.374: E/AndroidRuntime(334):         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
12-12 14:17:24.374: E/AndroidRuntime(334):         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
12-12 14:17:24.374: E/AndroidRuntime(334):         at java.lang.Thread.run(Thread.java:1019)
12-12 14:17:24.374: E/AndroidRuntime(334): Caused by: java.lang.NullPointerException
12-12 14:17:24.374: E/AndroidRuntime(334):         at com.midominio.carlos.RegistrateActivity.loginstatus(RegistrateActivity.java:191)
12-12 14:17:24.374: E/AndroidRuntime(334):         at com.midominio.carlos.RegistrateActivity$asynclogin.doInBackground(RegistrateActivity.java:275)
12-12 14:17:24.374: E/AndroidRuntime(334):         at com.midominio.carlos.RegistrateActivity$asynclogin.doInBackground(RegistrateActivity.java:1)
12-12 14:17:24.374: E/AndroidRuntime(334):         at android.os.AsyncTask$2.call(AsyncTask.java:185)
12-12 14:17:24.374: E/AndroidRuntime(334):         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
12-12 14:17:24.374: E/AndroidRuntime(334):         ... 4 more
12-12 14:17:25.984: E/WindowManager(334): Activity com.midominio.carlos.RegistrateActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@405647a8 that was originally added here
12-12 14:17:25.984: E/WindowManager(334): android.view.WindowLeaked: Activity com.midominio.carlos.RegistrateActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@405647a8 that was originally added here
12-12 14:17:25.984: E/WindowManager(334):         at android.view.ViewRoot.<init>(ViewRoot.java:258)
12-12 14:17:25.984: E/WindowManager(334):         at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
12-12 14:17:25.984: E/WindowManager(334):         at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
12-12 14:17:25.984: E/WindowManager(334):         at android.view.Window$LocalWindowManager.addView(Window.java:424)
12-12 14:17:25.984: E/WindowManager(334):         at android.app.Dialog.show(Dialog.java:241)
12-12 14:17:25.984: E/WindowManager(334):         at com.midominio.carlos.RegistrateActivity$asynclogin.onPreExecute(RegistrateActivity.java:261)
12-12 14:17:25.984: E/WindowManager(334):         at android.os.AsyncTask.execute(AsyncTask.java:391)
12-12 14:17:25.984: E/WindowManager(334):         at com.midominio.carlos.RegistrateActivity$5.onClick(RegistrateActivity.java:151)
12-12 14:17:25.984: E/WindowManager(334):         at android.view.View.performClick(View.java:2485)
12-12 14:17:25.984: E/WindowManager(334):         at android.view.View$PerformClick.run(View.java:9080)
12-12 14:17:25.984: E/WindowManager(334):         at android.os.Handler.handleCallback(Handler.java:587)
12-12 14:17:25.984: E/WindowManager(334):         at android.os.Handler.dispatchMessage(Handler.java:92)
12-12 14:17:25.984: E/WindowManager(334):         at android.os.Looper.loop(Looper.java:123)
12-12 14:17:25.984: E/WindowManager(334):         at android.app.ActivityThread.main(ActivityThread.java:3683)
12-12 14:17:25.984: E/WindowManager(334):         at java.lang.reflect.Method.invokeNative(Native Method)
12-12 14:17:25.984: E/WindowManager(334):         at java.lang.reflect.Method.invoke(Method.java:507)
12-12 14:17:25.984: E/WindowManager(334):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
12-12 14:17:25.984: E/WindowManager(334):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
12-12 14:17:25.984: E/WindowManager(334):         at dalvik.system.NativeStart.main(Native Method)
12-12 14:17:31.214: D/dalvikvm(334): GC_EXPLICIT freed 194K, 54% free 2857K/6087K, external 909K/1231K, paused 85ms


Il codice in question é:
Codice: [Seleziona]
public class RegistrateActivity extends Activity {
       
        EditText zusuario,zpassword,zcorreo,tform,et1;
        Button zForm;
        Button zCancel;
        String t_rangoedades;
    String t_estados;
        String t_generos;
        String t_correo;
    String t_usuario;
        String t_password;
        String t_bar;
        Spinner zgeneros;
        Spinner zrangoedades;
    Spinner zestados;
        Httppostaux post;
            // String URL_connect="[url=http://www.scandroidtest.site90.com/acces.php";]000webhost.com - free web hosting provider[/url]
        String IP_Server="www.midominio.es";//
        String URL_connect="http://"+IP_Server+"/carlos/usuarioNew.php";//ruta en donde estan nuestros archivos
        boolean result_back;
        private ProgressDialog pDialog;
   
       

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_registrate);
       
        final TextView zerror = (TextView)findViewById(R.id.errorForm);
        et1=(EditText)findViewById(R.id.usuario);

        ///////////////////   Inicio Rango Edad ////////////////////////////////////////////     
        Spinner spinedad = (Spinner)  findViewById(R.id.rangoedades);
       ArrayAdapter<CharSequence> adapt_edad = ArrayAdapter.createFromResource(this,R.array.EdadArray, android.R.layout.simple_spinner_item);
       adapt_edad.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       spinedad.setAdapter(adapt_edad);
       spinedad.setOnItemSelectedListener(
       new AdapterView.OnItemSelectedListener() {

                   public void onItemSelected(AdapterView<?> parent,
                       android.view.View v, int position, long id) {
                                        t_rangoedades = parent.getItemAtPosition(position).toString();
                          /* Toast.makeText(parent.getContext(), "" + t_rangoedades, Toast.LENGTH_LONG).show(); */
                   }
           
                   public void onNothingSelected(AdapterView<?> parent) {
                       zerror.setText("");
                   }
           });
       ///////////////////  fin Rango Edad ////////////////////////////////////////////
       ///////////////////   Inicio Estado ////////////////////////////////////////////
       Spinner spinEstados = (Spinner)  findViewById(R.id.estados);
       ArrayAdapter<CharSequence> adapt_estados = ArrayAdapter.createFromResource(this,R.array.EstadoArray, android.R.layout.simple_spinner_item);
       adapt_estados.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       spinEstados.setAdapter(adapt_estados);
       spinEstados.setOnItemSelectedListener(
       new AdapterView.OnItemSelectedListener() {
                      public void onItemSelected(AdapterView<?> parent,
                          android.view.View v, int position, long id) {
                                             t_estados = parent.getItemAtPosition(position).toString();
                             /* Toast.makeText(parent.getContext(), "" + t_estados, Toast.LENGTH_LONG).show(); */
                      }
               
                      public void onNothingSelected(AdapterView<?> parent) {
                          zerror.setText("");
                      }
              });
       ///////////////////  fin estado ////////////////////////////////////////////
       ///////////////////   Inicio genero ////////////////////////////////////////////
       Spinner spingeneros = (Spinner)  findViewById(R.id.generos);
       ArrayAdapter<CharSequence> adapgeneros = ArrayAdapter.createFromResource(this,R.array.GeneroArray, android.R.layout.simple_spinner_item);
       adapgeneros.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       spingeneros.setAdapter(adapgeneros);       
       spingeneros.setOnItemSelectedListener(
       new AdapterView.OnItemSelectedListener() {
                     public void onItemSelected(AdapterView<?> parent,
                         android.view.View v, int position, long id) {
                                         t_generos = parent.getItemAtPosition(position).toString();
                            /* Toast.makeText(parent.getContext(), "" + t_generos, Toast.LENGTH_LONG).show(); */
                     }
             
                     public void onNothingSelected(AdapterView<?> parent) {
                         zerror.setText("");
                     }
             });
       ///////////////////   fin genero ////////////////////////////////////////////
     
       zusuario=(EditText)findViewById(R.id.usuario);
       zpassword=(EditText)findViewById(R.id.password);
       zcorreo=(EditText)findViewById(R.id.correo);

       zCancel=(Button)findViewById(R.id.FormRegistro);
       Button zcancel=(Button)findViewById(R.id.FormCancel); 
       zcancel.setOnClickListener(new View.OnClickListener() { 
     
       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
               Intent  wfotos = new Intent(RegistrateActivity.this,Principal.class);
                            startActivity(wfotos);
                            finish();
           }});
         
       
       zForm=(Button)findViewById(R.id.FormRegistro);
       zForm.setOnClickListener(new View.OnClickListener() {

               
        public void onClick(View v) {
                //Extreamos datos de los EditText
                    String usuario=zusuario.getText().toString();
                    String password=zpassword.getText().toString();
                    String correo=zusuario.getText().toString();
                    String generos=t_generos;
                    String rangoedades=t_rangoedades;
                    String estados=t_estados;
                    String bar ="mibar";

                   
            if( checklogindata( usuario, password, correo, generos, rangoedades, estados, bar )==true){

                        //si pasamos esa validacion ejecutamos el asynctask pasando el usuario y clave como parametros
                       
                new asynclogin().execute(usuario, password, correo, generos, rangoedades, estados, bar);                                       
                                             
               
                }else{
                        //si detecto un error en la primera validacion vibrar y mostrar un Toast con un mensaje de error.
                        err_login();
                }
    }


});


    }
   
    //vibra y muestra un Toast
    public void err_login(){
            /*Vibrator vibrator =(Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
            vibrator.vibrate(200);*/
            Toast toast1 = Toast.makeText(getApplicationContext(),"Error:Nombre de usuario o password incorrectos", Toast.LENGTH_SHORT);
             toast1.show();           
    }
   
   
    /*Valida el estado del logueo solamente necesita como parametros el usuario y passw*/
    public boolean loginstatus( String zusuario, String zpassword,String zcorreo,String zgeneros, String zrangoedades, String zestados,String zbar ) {
            int logstatus=-1;
           
            /*Creamos un ArrayList del tipo nombre valor para agregar los datos recibidos por los parametros anteriores
             * y enviarlo mediante POST a nuestro sistema para relizar la validacion*/
            ArrayList<NameValuePair> postparameters2send= new ArrayList<NameValuePair>();
                    
                                    postparameters2send.add(new BasicNameValuePair("tusuario", zusuario));
                                    postparameters2send.add(new BasicNameValuePair("tpassword", zpassword));
                                    postparameters2send.add(new BasicNameValuePair("tcorreo", zcorreo));
                                    postparameters2send.add(new BasicNameValuePair("tgeneros", zgeneros));
                                    postparameters2send.add(new BasicNameValuePair("trangoedades",zrangoedades));
                                    postparameters2send.add(new BasicNameValuePair("testados", zestados));
                                    postparameters2send.add(new BasicNameValuePair("tbar","mibar"));
                                   
                   //realizamos una peticion y como respuesta obtenes un array JSON
                      JSONArray jdata=post.getserverdata(postparameters2send, URL_connect);

                      /*como estamos trabajando de manera local el ida y vuelta sera casi inmediato
                       * para darle un poco realismo decimos que el proceso se pare por unos segundos para poder
                       * observar el progressdialog
                       * la podemos eliminar si queremos
                       */
                    SystemClock.sleep(950);
                                   
                    //si lo que obtuvimos no es null
                            if (jdata!=null && jdata.length() > 0){

                                    JSONObject json_data; //creamos un objeto JSON
                                        try {
                                                json_data = jdata.getJSONObject(0); //leemos el primer segmento en nuestro caso el unico
                                                 logstatus=json_data.getInt("logstatus");//accedemos al valor
                                                 Log.e("loginstatus","logstatus= "+logstatus);//muestro por log que obtuvimos
                                        } catch (JSONException e) {
                                                // TODO Auto-generated catch block
                                                e.printStackTrace();
                                        }                           
                             
                                        //validamos el valor obtenido
                                     if (logstatus==0){// [{"logstatus":"0"}]
                                             Log.e("loginstatus ", "invalido");
                                             return false;
                                     }
                                     else{// [{"logstatus":"1"}]
                                             Log.e("loginstatus ", "valido");
                                             return true;
                                     }
                                     
                          }else{        //json obtenido invalido verificar parte WEB.
                                             Log.e("JSON  ", "ERROR");
                                            return false;
                          }
           
    }
   
    //validamos si no hay ningun campo en blanco
    public boolean checklogindata(String usuario, String password, String correo, String  generos, String rangoedades, String estados, String bar ){
           
    if         (usuario.equals("") || password.equals("") || password.equals("") || correo.equals("") || generos.equals("") || rangoedades.equals("") || estados.equals("") || bar.equals("")){
            Log.e("Datos ui", "Control de Datos Error");
    return false;
   
    }else{
           
            return true;
    }
   
}
 
    /*                CLASE ASYNCTASK
     *
     * usaremos esta para poder mostrar el dialogo de progreso mientras enviamos y obtenemos los datos
     * podria hacerse lo mismo sin usar esto pero si el tiempo de respuesta es demasiado lo que podria ocurrir   
     * si la conexion es lenta o el servidor tarda en responder la aplicacion sera inestable.
     * ademas observariamos el mensaje de que la app no responde.     
     */
       
        class asynclogin extends AsyncTask< String, String, String > {
     
            protected void onPreExecute() {
                    //para el progress dialog
                pDialog = new ProgressDialog(RegistrateActivity.this);
                pDialog.setMessage("Insertando datos....");
                pDialog.setIndeterminate(false);
                pDialog.setCancelable(false);
                pDialog.show();
            }
     
                    protected String doInBackground(String... params) {
                            //obtnemos usr y pass
                                
                    String a_usuario, a_password, a_correo, a_generos, a_rangoedades, a_estados, a_bar;
                   
                        a_usuario=params[0];
                            a_password=params[1];
                            a_correo=params[2];
                            a_generos=params[3];
                            a_rangoedades=params[4];
                            a_estados=params[5];
                            a_bar=params[6];

                            //enviamos y recibimos y analizamos los datos en segundo plano.
                        if (loginstatus(a_usuario,a_password,a_correo,a_generos,a_rangoedades,a_estados,a_bar)==true){                                       
                                return "ok"; //login valido
                        }else{                   
                                return "err"; //login invalido                                
                        }
                   
                    }
           
                    /*Una vez terminado doInBackground segun lo que halla ocurrido
                    pasamos a la sig. activity
                    o mostramos error*/
            protected void onPostExecute(String result) {

               pDialog.dismiss();//ocultamos progess dialog.
               Log.e("onPostExecute=",""+result);
               
               if (result.equals("ok")){

                                    Intent i=new Intent(RegistrateActivity.this, New.class);
                                    /*i.putExtra("user",user);*/
                                    startActivity(i);
                                   
                }else{
                        err_login();
                }                                                                                  }
                   
            }

}

Grazie in anticipo
Un saluto
« Ultima modifica: 13 Dicembre 2012, 00:21:07 CET da Spagna »

Offline theBaffo

  • Utente normale
  • ***
  • Post: 164
  • Respect: +24
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Windows 8.1
Re:FATAL EXCEPTION: AsyncTask #2
« Risposta #1 il: 12 Dicembre 2012, 16:49:17 CET »
0
Cosa c'è esattamente alla riga 191? è da li che nasce tutto (vedi logcat)

Codice (Java): [Seleziona]
com.midominio.carlos.RegistrateActivity.loginstatus(RegistrateActivity.java:191)
Se ti sono stato utile, premi "thanks" ;)

"Errare è umano, ma per incasinare davvero tutto è necessario un computer" - Arthur Bloch

Offline Spagna

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy
  • Sistema operativo:
    windows 7
Re:FATAL EXCEPTION: AsyncTask #2
« Risposta #2 il: 12 Dicembre 2012, 18:23:29 CET »
0
Grazie per rispondermi
ti passo tutta la Activity:
Codice: [Seleziona]
public class RegistrateActivity extends Activity {
       
        EditText zusuario,zpassword,zcorreo,tform,et1;
        Button zForm;
        Button zCancel;
        String t_rangoedades;
    String t_estados;
        String t_generos;
        String t_correo;
    String t_usuario;
        String t_password;
        String t_bar;
        Spinner zgeneros;
        Spinner zrangoedades;
    Spinner zestados;
        Httppostaux post;
            // String URL_connect="[url=http://www.scandroidtest.site90.com/acces.php";]000webhost.com - free web hosting provider[/url]
        String IP_Server="www.yournight.es";//IP DE NUESTRO PC
        String URL_connect="http://"+IP_Server+"/carlos/usuarioNew.php";//ruta en donde estan nuestros archivos
        boolean result_back;
        private ProgressDialog pDialog;
   
       

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_registrate);
       
        final TextView zerror = (TextView)findViewById(R.id.errorForm);
        et1=(EditText)findViewById(R.id.usuario);

        ///////////////////   Inicio Rango Edad ////////////////////////////////////////////     
        Spinner spinedad = (Spinner)  findViewById(R.id.rangoedades);
       ArrayAdapter<CharSequence> adapt_edad = ArrayAdapter.createFromResource(this,R.array.EdadArray, android.R.layout.simple_spinner_item);
       adapt_edad.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       spinedad.setAdapter(adapt_edad);
       spinedad.setOnItemSelectedListener(
       new AdapterView.OnItemSelectedListener() {

                   public void onItemSelected(AdapterView<?> parent,
                       android.view.View v, int position, long id) {
                                        t_rangoedades = parent.getItemAtPosition(position).toString();
                          /* Toast.makeText(parent.getContext(), "" + t_rangoedades, Toast.LENGTH_LONG).show(); */
                   }
           
                   public void onNothingSelected(AdapterView<?> parent) {
                       zerror.setText("");
                   }
           });
       ///////////////////  fin Rango Edad ////////////////////////////////////////////
       ///////////////////   Inicio Estado ////////////////////////////////////////////
       Spinner spinEstados = (Spinner)  findViewById(R.id.estados);
       ArrayAdapter<CharSequence> adapt_estados = ArrayAdapter.createFromResource(this,R.array.EstadoArray, android.R.layout.simple_spinner_item);
       adapt_estados.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       spinEstados.setAdapter(adapt_estados);
       spinEstados.setOnItemSelectedListener(
       new AdapterView.OnItemSelectedListener() {
                      public void onItemSelected(AdapterView<?> parent,
                          android.view.View v, int position, long id) {
                                             t_estados = parent.getItemAtPosition(position).toString();
                             /* Toast.makeText(parent.getContext(), "" + t_estados, Toast.LENGTH_LONG).show(); */
                      }
               
                      public void onNothingSelected(AdapterView<?> parent) {
                          zerror.setText("");
                      }
              });
       ///////////////////  fin estado ////////////////////////////////////////////
       ///////////////////   Inicio genero ////////////////////////////////////////////
       Spinner spingeneros = (Spinner)  findViewById(R.id.generos);
       ArrayAdapter<CharSequence> adapgeneros = ArrayAdapter.createFromResource(this,R.array.GeneroArray, android.R.layout.simple_spinner_item);
       adapgeneros.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       spingeneros.setAdapter(adapgeneros);       
       spingeneros.setOnItemSelectedListener(
       new AdapterView.OnItemSelectedListener() {
                     public void onItemSelected(AdapterView<?> parent,
                         android.view.View v, int position, long id) {
                                         t_generos = parent.getItemAtPosition(position).toString();
                            /* Toast.makeText(parent.getContext(), "" + t_generos, Toast.LENGTH_LONG).show(); */
                     }
             
                     public void onNothingSelected(AdapterView<?> parent) {
                         zerror.setText("");
                     }
             });
       ///////////////////   fin genero ////////////////////////////////////////////
     
       zusuario=(EditText)findViewById(R.id.usuario);
       zpassword=(EditText)findViewById(R.id.password);
       zcorreo=(EditText)findViewById(R.id.correo);

       zCancel=(Button)findViewById(R.id.FormRegistro);
       Button zcancel=(Button)findViewById(R.id.FormCancel); 
       zcancel.setOnClickListener(new View.OnClickListener() { 
     
       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
               Intent  wfotos = new Intent(RegistrateActivity.this,Principal.class);
                            startActivity(wfotos);
                            finish();
           }});
         
       
       zForm=(Button)findViewById(R.id.FormRegistro);
       zForm.setOnClickListener(new View.OnClickListener() {

               
        public void onClick(View v) {
                //Extreamos datos de los EditText
                    String usuario=zusuario.getText().toString();
                    String password=zpassword.getText().toString();
                    String correo=zusuario.getText().toString();
                    String generos=t_generos;
                    String rangoedades=t_rangoedades;
                    String estados=t_estados;
                    String bar ="mibar";

                   
            if( checklogindata( usuario, password, correo, generos, rangoedades, estados, bar )==true){

                        //si pasamos esa validacion ejecutamos el asynctask pasando el usuario y clave como parametros
                       
                new asynclogin().execute(usuario, password, correo, generos, rangoedades, estados, bar);                                       
                                             
               
                }else{
                        //si detecto un error en la primera validacion vibrar y mostrar un Toast con un mensaje de error.
                        err_login();
                }
    }


});


    }
   
    //vibra y muestra un Toast
    public void err_login(){
            /*Vibrator vibrator =(Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
            vibrator.vibrate(200);*/
            Toast toast1 = Toast.makeText(getApplicationContext(),"Error:Nombre de usuario o password incorrectos", Toast.LENGTH_SHORT);
             toast1.show();           
    }
   
   
    /*Valida el estado del logueo solamente necesita como parametros el usuario y passw*/
    public boolean loginstatus( String zusuario, String zpassword,String zcorreo,String zgeneros, String zrangoedades, String zestados,String zbar ) {
            int logstatus=-1;
           
            /*Creamos un ArrayList del tipo nombre valor para agregar los datos recibidos por los parametros anteriores
             * y enviarlo mediante POST a nuestro sistema para relizar la validacion*/
            ArrayList<NameValuePair> postparameters2send= new ArrayList<NameValuePair>();
                    
                                    postparameters2send.add(new BasicNameValuePair("tusuario", zusuario));
                                    postparameters2send.add(new BasicNameValuePair("tpassword", zpassword));
                                    postparameters2send.add(new BasicNameValuePair("tcorreo", zcorreo));
                                    postparameters2send.add(new BasicNameValuePair("tgeneros", zgeneros));
                                    postparameters2send.add(new BasicNameValuePair("trangoedades",zrangoedades));
                                    postparameters2send.add(new BasicNameValuePair("testados", zestados));
                                    postparameters2send.add(new BasicNameValuePair("tbar","mibar"));
                                   
                   //realizamos una peticion y como respuesta obtenes un array JSON
                      JSONArray jdata=post.getserverdata(postparameters2send, URL_connect);

                      /*como estamos trabajando de manera local el ida y vuelta sera casi inmediato
                       * para darle un poco realismo decimos que el proceso se pare por unos segundos para poder
                       * observar el progressdialog
                       * la podemos eliminar si queremos
                       */
                    SystemClock.sleep(950);
                                   
                    //si lo que obtuvimos no es null
                            if (jdata!=null && jdata.length() > 0){

                                    JSONObject json_data; //creamos un objeto JSON
                                        try {
                                                json_data = jdata.getJSONObject(0); //leemos el primer segmento en nuestro caso el unico
                                                 logstatus=json_data.getInt("logstatus");//accedemos al valor
                                                 Log.e("loginstatus","logstatus= "+logstatus);//muestro por log que obtuvimos
                                        } catch (JSONException e) {
                                                // TODO Auto-generated catch block
                                                e.printStackTrace();
                                        }                           
                             
                                        //validamos el valor obtenido
                                     if (logstatus==0){// [{"logstatus":"0"}]
                                             Log.e("loginstatus ", "invalido");
                                             return false;
                                     }
                                     else{// [{"logstatus":"1"}]
                                             Log.e("loginstatus ", "valido");
                                             return true;
                                     }
                                     
                          }else{        //json obtenido invalido verificar parte WEB.
                                             Log.e("JSON  ", "ERROR");
                                            return false;
                          }
           
    }
   
    //validamos si no hay ningun campo en blanco
    public boolean checklogindata(String usuario, String password, String correo, String  generos, String rangoedades, String estados, String bar ){
           
    if         (usuario.equals("") || password.equals("") || password.equals("") || correo.equals("") || generos.equals("") || rangoedades.equals("") || estados.equals("") || bar.equals("")){
            Log.e("Datos ui", "Control de Datos Error");
    return false;
   
    }else{
           
            return true;
    }
   
}
 
    /*                CLASE ASYNCTASK
     *
     * usaremos esta para poder mostrar el dialogo de progreso mientras enviamos y obtenemos los datos
     * podria hacerse lo mismo sin usar esto pero si el tiempo de respuesta es demasiado lo que podria ocurrir   
     * si la conexion es lenta o el servidor tarda en responder la aplicacion sera inestable.
     * ademas observariamos el mensaje de que la app no responde.     
     */
       
        class asynclogin extends AsyncTask< String, String, String > {
     
            protected void onPreExecute() {
                    //para el progress dialog
                pDialog = new ProgressDialog(RegistrateActivity.this);
                pDialog.setMessage("Insertando datos....");
                pDialog.setIndeterminate(false);
                pDialog.setCancelable(false);
                pDialog.show();
            }
     
                    protected String doInBackground(String... params) {
                            //obtnemos usr y pass
                                
                    String a_usuario, a_password, a_correo, a_generos, a_rangoedades, a_estados, a_bar;
                   
                        a_usuario=params[0];
                            a_password=params[1];
                            a_correo=params[2];
                            a_generos=params[3];
                            a_rangoedades=params[4];
                            a_estados=params[5];
                            a_bar=params[6];

                            //enviamos y recibimos y analizamos los datos en segundo plano.
                        if (loginstatus(a_usuario,a_password,a_correo,a_generos,a_rangoedades,a_estados,a_bar)==true){                                       
                                return "ok"; //login valido
                        }else{                   
                                return "err"; //login invalido                                
                        }
                   
                    }
           
                    /*Una vez terminado doInBackground segun lo que halla ocurrido
                    pasamos a la sig. activity
                    o mostramos error*/
            protected void onPostExecute(String result) {

               pDialog.dismiss();//ocultamos progess dialog.
               Log.e("onPostExecute=",""+result);
               
               if (result.equals("ok")){

                                    Intent i=new Intent(RegistrateActivity.this, New.class);
                                    /*i.putExtra("user",user);*/
                                    startActivity(i);
                                   
                }else{
                        err_login();
                }                                                                                  }
                   
            }

}
Ti ringrazio
Un saluto
« Ultima modifica: 13 Dicembre 2012, 00:21:34 CET da Spagna »

Offline Spagna

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy
  • Sistema operativo:
    windows 7
Re:FATAL EXCEPTION: AsyncTask #2
« Risposta #3 il: 13 Dicembre 2012, 00:24:02 CET »
0
Ho tentato di modificare il codeige e me da sempre error pero questa volta diferente:
LogCat:
Codice: [Seleziona]
2-13 00:14:35.989: D/dalvikvm(332): GC_CONCURRENT freed 434K, 53% free 2743K/5831K, external 800K/1038K, paused 10ms+6ms
12-13 00:14:45.319: D/dalvikvm(332): GC_CONCURRENT freed 459K, 54% free 2713K/5831K, external 719K/1038K, paused 21ms+6ms
12-13 00:14:59.148: W/dalvikvm(332): threadid=9: thread exiting with uncaught exception (group=0x40015560)
12-13 00:14:59.148: E/AndroidRuntime(332): FATAL EXCEPTION: AsyncTask #1
12-13 00:14:59.148: E/AndroidRuntime(332): java.lang.RuntimeException: An error occured while executing doInBackground()
12-13 00:14:59.148: E/AndroidRuntime(332):         at android.os.AsyncTask$3.done(AsyncTask.java:200)
12-13 00:14:59.148: E/AndroidRuntime(332):         at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
12-13 00:14:59.148: E/AndroidRuntime(332):         at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
12-13 00:14:59.148: E/AndroidRuntime(332):         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
12-13 00:14:59.148: E/AndroidRuntime(332):         at java.util.concurrent.FutureTask.run(FutureTask.java:138)
12-13 00:14:59.148: E/AndroidRuntime(332):         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
12-13 00:14:59.148: E/AndroidRuntime(332):         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
12-13 00:14:59.148: E/AndroidRuntime(332):         at java.lang.Thread.run(Thread.java:1019)
12-13 00:14:59.148: E/AndroidRuntime(332): Caused by: java.lang.NullPointerException
12-13 00:14:59.148: E/AndroidRuntime(332):         at com.midominio.carlos.RegistrateActivity.loginstatus(RegistrateActivity.java:192)
12-13 00:14:59.148: E/AndroidRuntime(332):         at com.midominio.carlos.RegistrateActivity$asynclogin.doInBackground(RegistrateActivity.java:278)
12-13 00:14:59.148: E/AndroidRuntime(332):         at com.midominio.carlos.RegistrateActivity$asynclogin.doInBackground(RegistrateActivity.java:1)
12-13 00:14:59.148: E/AndroidRuntime(332):         at android.os.AsyncTask$2.call(AsyncTask.java:185)
12-13 00:14:59.148: E/AndroidRuntime(332):         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
12-13 00:14:59.148: E/AndroidRuntime(332):         ... 4 more
12-13 00:14:59.638: D/dalvikvm(332): GC_CONCURRENT freed 314K, 52% free 2854K/5831K, external 909K/1038K, paused 10ms+7ms
12-13 00:15:01.188: E/WindowManager(332): Activity com.midominio.carlos.RegistrateActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@40562d10 that was originally added here
12-13 00:15:01.188: E/WindowManager(332): android.view.WindowLeaked: Activity com.midominio.carlos.RegistrateActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@40562d10 that was originally added here
12-13 00:15:01.188: E/WindowManager(332):         at android.view.ViewRoot.<init>(ViewRoot.java:258)
12-13 00:15:01.188: E/WindowManager(332):         at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
12-13 00:15:01.188: E/WindowManager(332):         at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
12-13 00:15:01.188: E/WindowManager(332):         at android.view.Window$LocalWindowManager.addView(Window.java:424)
12-13 00:15:01.188: E/WindowManager(332):         at android.app.Dialog.show(Dialog.java:241)
12-13 00:15:01.188: E/WindowManager(332):         at com.midominio.carlos.RegistrateActivity$asynclogin.onPreExecute(RegistrateActivity.java:261)
12-13 00:15:01.188: E/WindowManager(332):         at android.os.AsyncTask.execute(AsyncTask.java:391)
12-13 00:15:01.188: E/WindowManager(332):         at com.midominio.carlos.RegistrateActivity$5.onClick(RegistrateActivity.java:151)
12-13 00:15:01.188: E/WindowManager(332):         at android.view.View.performClick(View.java:2485)
12-13 00:15:01.188: E/WindowManager(332):         at android.view.View$PerformClick.run(View.java:9080)
12-13 00:15:01.188: E/WindowManager(332):         at android.os.Handler.handleCallback(Handler.java:587)
12-13 00:15:01.188: E/WindowManager(332):         at android.os.Handler.dispatchMessage(Handler.java:92)
12-13 00:15:01.188: E/WindowManager(332):         at android.os.Looper.loop(Looper.java:123)
12-13 00:15:01.188: E/WindowManager(332):         at android.app.ActivityThread.main(ActivityThread.java:3683)
12-13 00:15:01.188: E/WindowManager(332):         at java.lang.reflect.Method.invokeNative(Native Method)
12-13 00:15:01.188: E/WindowManager(332):         at java.lang.reflect.Method.invoke(Method.java:507)
12-13 00:15:01.188: E/WindowManager(332):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
12-13 00:15:01.188: E/WindowManager(332):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
12-13 00:15:01.188: E/WindowManager(332):         at dalvik.system.NativeStart.main(Native Method)
12-13 00:15:03.168: I/Process(332): Sending signal. PID: 332 SIG: 9