Home Menu

Menu



Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 25/09/14, 20:19:22
Avatar de xero83
xero83 xero83 no está en línea
Usuario novato en la web
Mensajes: 11
 
Fecha de registro: abr 2010
Mensajes: 11
Mencionado: 0 comentarios
Tagged: 0 hilos
Errores layout conexion php

Hola, me presento, acabo de iniciarme en el desarrollo de aplicaciones android en eclipse, he creado dos layout, uno principal con un boton que he instanciado a otro layout que realiza una entrada a una base de datos mediante la obtención de unos textos.

Envio los codigos:
El principal:
package com.example.stock;

import android.support.v7.app.ActionBarActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class Principal extends ActionBarActivity {
private Button boton;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_principal);
// Instanciar elemento
boton = (Button) findViewById(R.id.botonEntradas);
// Accion del boton
boton.setOnClickListener(new OnClickListener() {

//@Override
public void onClick(View v) {
Intent intent = new Intent(Principal.this, Entrada.class);
startActivity(intent);
}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.principal, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}

El de la entrada:
package com.example.stock;

import android.support.v7.app.ActionBarActivity;
import java.io.IOException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;


//@SuppressLint("ShowToast")
public class Entrada extends ActionBarActivity {
final EditText codigo=(EditText)findViewById(R.id.codigoText);
final EditText ubicacion=(EditText)findViewById(R.id.ubicacionTex t);
final EditText unidades=(EditText)findViewById(R.id.cantidadText) ;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_entrada);

Button botonEntrada=(Button)findViewById(R.id.botonEntrad as);
botonEntrada.setOnClickListener(new View.OnClickListener() {

@SuppressLint("ShowToast") @Override
public void onClick(View v) {

try{
httpGetData("http://10.0.2.2/registrarArticulo.php?codigo="+codigo.getText()+
"&ubicacion="+ubicacion.getText()+"&unidades="+uni dades.getText());
Toast.makeText(getApplicationContext(), "El dato ha sido enviado correctamente", 1000).show();
}catch(Exception e){
Toast.makeText(getApplicationContext(), "Error en el envio de la informacion, verifique su conexion a internet y vuelva a intentarlo.", 1000).show();
}

}
});
}

public String httpGetData(String mURL) {
String response="";
mURL=mURL.replace(" ", "%20");
Log.i("LocAndroid Response HTTP Threas","Ejecutando get 0: "+mURL);
HttpClient httpclient = new DefaultHttpClient();

Log.i("LocAndroid Response HTTP Thread","Ejecutando get 1");
HttpGet httppost = new HttpGet(mURL);
Log.i("LocAndroid Response HTTP Thread","Ejecutando get 2");
try {


Log.i("LocAndroid Response HTTP","Ejecutando get");
// Execute HTTP Post Request
ResponseHandler<String> responseHandler=new BasicResponseHandler();
response = httpclient.execute(httppost,responseHandler);
Log.i("LocAndroid Response HTTP",response);
} catch (ClientProtocolException e) {
Log.i("LocAndroid Response HTTP ERROR 1",e.getMessage());
// TODO Auto-generated catch block
} catch (IOException e) {

Log.i("LocAndroid Response HTTP ERROR 2",e.getMessage());
// TODO Auto-generated catch block
}
return response;

}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.entrada, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}




}

El error que me da en el logCat:
09-25 20:12:04.570: D/AudioManager(9123): [AudioManager.java:471:<init>()] isMicrophoneMute // is_btsco_muted:false Mute:true
09-25 20:12:04.617: D/AndroidRuntime(9123): Shutting down VM
09-25 20:12:04.617: W/dalvikvm(9123): threadid=1: thread exiting with uncaught exception (group=0x4001a560)
09-25 20:12:04.625: E/AndroidRuntime(9123): FATAL EXCEPTION: main
09-25 20:12:04.625: E/AndroidRuntime(9123): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.stock/com.example.stock.Entrada}: java.lang.NullPointerException
09-25 20:12:04.625: E/AndroidRuntime(9123): at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:1580)
09-25 20:12:04.625: E/AndroidRuntime(9123): at android.app.ActivityThread.handleLaunchActivity(Ac tivityThread.java:1674)
09-25 20:12:04.625: E/AndroidRuntime(9123): at android.app.ActivityThread.access$1500(ActivityThr ead.java:117)
09-25 20:12:04.625: E/AndroidRuntime(9123): at android.app.ActivityThread$H.handleMessage(Activit yThread.java:942)
09-25 20:12:04.625: E/AndroidRuntime(9123): at android.os.Handler.dispatchMessage(Handler.java:99 )
09-25 20:12:04.625: E/AndroidRuntime(9123): at android.os.Looper.loop(Looper.java:130)
09-25 20:12:04.625: E/AndroidRuntime(9123): at android.app.ActivityThread.main(ActivityThread.jav a:3694)
09-25 20:12:04.625: E/AndroidRuntime(9123): at java.lang.reflect.Method.invokeNative(Native Method)
09-25 20:12:04.625: E/AndroidRuntime(9123): at java.lang.reflect.Method.invoke(Method.java:507)
09-25 20:12:04.625: E/AndroidRuntime(9123): at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:860)
09-25 20:12:04.625: E/AndroidRuntime(9123): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:618)
09-25 20:12:04.625: E/AndroidRuntime(9123): at dalvik.system.NativeStart.main(Native Method)
09-25 20:12:04.625: E/AndroidRuntime(9123): Caused by: java.lang.NullPointerException
09-25 20:12:04.625: E/AndroidRuntime(9123): at android.app.Activity.findViewById(Activity.java:16 52)
09-25 20:12:04.625: E/AndroidRuntime(9123): at com.example.stock.Entrada.<init>(Entrada.java:24)
09-25 20:12:04.625: E/AndroidRuntime(9123): at java.lang.Class.newInstanceImpl(Native Method)
09-25 20:12:04.625: E/AndroidRuntime(9123): at java.lang.Class.newInstance(Class.java:1409)
09-25 20:12:04.625: E/AndroidRuntime(9123): at android.app.Instrumentation.newActivity(Instrument ation.java:1021)
09-25 20:12:04.625: E/AndroidRuntime(9123): at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:1572)
09-25 20:12:04.625: E/AndroidRuntime(9123): ... 11 more


Una ayudita plissss.
Responder Con Cita


  #2  
Viejo 25/09/14, 20:27:26
Avatar de jmmunoz
jmmunoz jmmunoz no está en línea
Usuario muy activo
Mensajes: 2,565
 
Fecha de registro: ago 2010
Localización: Barcelona
Mensajes: 2,565
Modelo de smartphone: SGIV
Versión de ROM: Free
Tu operador: Pepephone
Mencionado: 11 comentarios
Tagged: 0 hilos
Buenas

El mensaje es que estas apuntando a un puntero que no encuentra.

Has puesto en el manifest.xml tu activity entrada?

Si no... llegas a la segunda pantalla?
Responder Con Cita
  #3  
Viejo 25/09/14, 20:30:13
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
Hay que tirar del hilo de las excepciones... La clave la tienes aquí:

Código:
09-25 20:12:04.625: E/AndroidRuntime(9123): Caused by: java.lang.NullPointerException
09-25 20:12:04.625: E/AndroidRuntime(9123): at android.app.Activity.findViewById(Activity.java:16 52)
09-25 20:12:04.625: E/AndroidRuntime(9123): at com.example.stock.Entrada.<init>(Entrada.java:24)
Entrada.java, línea 24. Supongo que es esta...

Código:
final EditText codigo=(EditText)findViewById(R.id.codigoText);
Normal que salte una excepción, la actividad no ha sido instanciada, ni se ha cargado el layout evidentemente. No puedes llamar al findViewById sin que la actividad se haya creado.
Responder Con Cita
Gracias de parte de:
  #4  
Viejo 25/09/14, 21:17:47
Avatar de xero83
xero83 xero83 no está en línea
Usuario novato en la web
Mensajes: 11
 
Fecha de registro: abr 2010
Mensajes: 11
Mencionado: 0 comentarios
Tagged: 0 hilos
Gracias por el apoyo recibido, y con tanta rapidez, es de agradecer.
Debido a mi pésimo por ahora conocimiento de programación de android (que no de java), no consigo verlo por mas que le doy vueltas.
Adjunto el codigo fuente del proyecto para que me podais hechar una manaza.

Muchas gracias por la solución anticipada.
Archivos Adjuntos
Tipo de Archivo: rar Stock.rar (4.77 MB, 2 visitas)
Responder Con Cita
  #5  
Viejo 25/09/14, 21:33:40
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
Pero si ya te hemos dicho dónde está el fallo, la línea y todo

El findViewById que llamas al principio en Entrada no puedes llamarlo ahí, lo tienes que llamar después del setContentView, igual que haces en Principal
Responder Con Cita
  #6  
Viejo 25/09/14, 21:37:52
Avatar de xero83
xero83 xero83 no está en línea
Usuario novato en la web
Mensajes: 11
 
Fecha de registro: abr 2010
Mensajes: 11
Mencionado: 0 comentarios
Tagged: 0 hilos
Eso es lo primero que he hecho, pero me sigue dando errores.
Si fueseis tan amables de hecharle un vistazo....
Responder Con Cita
  #7  
Viejo 25/09/14, 21:57:42
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
Claro, pero ahora te dará otro error digo yo, ¿no?.

Como ya tienes experiencia con java, échale un vistazo a las excepciones, suelen ser muy descriptivas como has podido ver (lo único es ver dónde está la línea que hace referencia a tus clases y el tipo de excepción).

El resto es paciencia, ir solucionando los errores uno a uno.

De todas formas, y más si estás empezando con android, es mejor ir haciendo la app paso a paso, y no escribir el código de un tirón que luego dificulta mucho el ir encontrando los errores.
Responder Con Cita
  #8  
Viejo 25/09/14, 22:11:25
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
En el código de Entradas.java has puesto esto:

Button botonEntrada=(Button)findViewById(R.id.botonEntrad as);

Y en el Layout activity_entrada pone esto:

android:id="@+id/botonGuardar"

Así que el error te lo debe estar dando el setOnClickListener, porque como "botonEntradas" no lo encuentra botonEntrada es null. Y botonEntrada.setOnClickListener da NullPointerException.
Responder Con Cita
  #9  
Viejo 25/09/14, 22:17:58
Avatar de xero83
xero83 xero83 no está en línea
Usuario novato en la web
Mensajes: 11
 
Fecha de registro: abr 2010
Mensajes: 11
Mencionado: 0 comentarios
Tagged: 0 hilos
Ya lo averigue, fue que tenia instanciado otro boton al entrar al layout, y me saltaban errores de null y todo lo demas.
De todas formas gracias.
Responder Con Cita
  #10  
Viejo 26/09/14, 00:03:20
Avatar de xero83
xero83 xero83 no está en línea
Usuario novato en la web
Mensajes: 11
 
Fecha de registro: abr 2010
Mensajes: 11
Mencionado: 0 comentarios
Tagged: 0 hilos
Una única consultilla respecto a este tema, y es que no me guarda el registro cuando intento guardarlo, me lo hace todo correctamente y no me da problemas, sale el mensaje de ok.
Las conexiones con la base de datos y entrada de registros son correctas, probe:
http://localhost/registrarArticulo.p...bicacion=sfsdf
y con esto me añade el registro en la base de datos.
Pero con la aplicación nada de nada.
Alguna idea de lo que puede pasar?????
Responder Con Cita
  #11  
Viejo 26/09/14, 11:08:40
Avatar de xero83
xero83 xero83 no está en línea
Usuario novato en la web
Mensajes: 11
 
Fecha de registro: abr 2010
Mensajes: 11
Mencionado: 0 comentarios
Tagged: 0 hilos
Alguna idea del problema?
Responder Con Cita
  #12  
Viejo 26/09/14, 20:31:38
Avatar de xero83
xero83 xero83 no está en línea
Usuario novato en la web
Mensajes: 11
 
Fecha de registro: abr 2010
Mensajes: 11
Mencionado: 0 comentarios
Tagged: 0 hilos
Alguien me puede ayudar???, me es importante.

Gracias..
Responder Con Cita
  #13  
Viejo 26/09/14, 21:04:00
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
No estarás poniendo localhost como servidor en el móvil, no?
Responder Con Cita
  #14  
Viejo 26/09/14, 21:35:48
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
Usa la 10.0.2.2, eso lo tiene bien. Quizá la URL que se genera tiene algún error, lo ideal sería ver la traza que ha puesto al recibir la respuesta.

La tostada de enviado correctamente que dice que le sale es engañosa porque no comprueba nunca si recibe un código 200 ok, podría ser un 404 o un 500.
Responder Con Cita
  #15  
Viejo 26/09/14, 22:07:21
Avatar de xero83
xero83 xero83 no está en línea
Usuario novato en la web
Mensajes: 11
 
Fecha de registro: abr 2010
Mensajes: 11
Mencionado: 0 comentarios
Tagged: 0 hilos
y con el codigo que tengo como lo puedo solucionar, de verdad es que estoy bastante perdido con este tema, y llevo varios dias intentandolo sin exito.
Responder Con Cita
  #16  
Viejo 26/09/14, 22:26:34
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
Tendrás que ir paso a paso...
1 - La URL que generas a partir de los parámetros es correcta? Muestrala en alguna traza.
2 - Para estar completamente seguros de que la URL es correcta, úsala en el navegador que tiene el emulador y mira si va bien.
3 - Si el paso 2 es correcto, volvemos a la app, la petición de http se llega a hacer? Recibes una respuesta? Qué código tiene la respuesta? Es un 200, un 500, otro número?
Responder Con Cita
  #17  
Viejo 01/10/14, 13:14:18
Avatar de xero83
xero83 xero83 no está en línea
Usuario novato en la web
Mensajes: 11
 
Fecha de registro: abr 2010
Mensajes: 11
Mencionado: 0 comentarios
Tagged: 0 hilos
Cuando intento acceder con el movil a localhost, me dice que no tengo permisos:
You don´t hve permision to acces / on this server....
Es provable que por ese motivo no me funcione la aplicación, y si es así como darle permisos al movil.

Gracias.
Responder Con Cita
  #18  
Viejo 01/10/14, 14:07:47
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
No puedes poner localhost en el navegador del móvil porque el servidor no está en el móvil, lo tienes en el PC. Tienes que poner la dirección IP del PC, o si estás con el emulador escribir http://10.0.2.2... (igual que lo tienes en el código, vaya) que es la dirección IP que representa el localhost del PC en el emulador del móvil.
Responder Con Cita
  #19  
Viejo 02/10/14, 12:56:06
Avatar de xero83
xero83 xero83 no está en línea
Usuario novato en la web
Mensajes: 11
 
Fecha de registro: abr 2010
Mensajes: 11
Mencionado: 0 comentarios
Tagged: 0 hilos
Ya me funciona en el emulador, gracias por todo, probandolo con el movil me salta errores de permisos en el apache que he de solucionar.
Responder Con Cita


Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 21:07:31 (GMT +2)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007