sábado, 14 de junio de 2014

Android - asynctask an error occurred while executing doInBackground

En ocasiones podemos encontrarnos con el siguiente error:
asynctask an error occurred while executing doInBackground
Al usar una tarea asincrona tenemos que tener cuidado y estar seguro de lo que hacemos, desde un hilo secundario no podemos hacer varias cosas, entre ellas modificar la apariencia del Layut, lanzar un Toast, etc ...

Si intentamos ejecutar alguna de esas acciones seguramente nos de este error, si en nuestra app necesitamos ejecutar alguna tarea, y que esta misma cambie, algo o lance un mensaje (Toast) tenemos metodos especificos para ellos, estos son ejecutados justo antes, o despues de ejecutar la tarea, estos metodos son:

               @Override
protected String doInBackground(String... params) {
//Aqui ejecutaremos la tarea de nuestro hilo asincrono
}

@Override
protected void onPostExecute(String result) {
//Esto se ejecutara al terminar el hilo, es decir la tarea ejecutada en el doInBackgroun
}

@Override
protected void onPreExecute() {
//Esto se ejecutara antes de ejecutar la tarea del doInBackground
}

Tanto en el metodo OnPreExecute, como en el OnPostExecute, es el lugar ideal para lanzar Toast, o cambiar elementos de la interfac

Espero os sirva de ayuda.

viernes, 13 de junio de 2014

Android - Tareas Asincronas

Hacia tiempo que no os traía novedades, pues bien hoy os traigo algo de lo que no habíamos hablado hasta ahora y como son las tareas asincronas en Android.

En este ejemplo muy sencillo basado en el ejemplo que viene para explicar el modo de hacerlo aunque incompleto... del libro Android 4 de ediciones ENI del autor Nazim Benbourahla.

En dicho ejemplo tenemos un layout con un botón y una progressbar, aunque esta ultima oculta, y desde su activity creamos una nueva clase la cual extiende de AsyncTask, y es el método doInBackground el que se encarga de llevar a cabo las tareas en 2 plano, en el ejemplo simplemente dormimos el hilo durante un segundo en cada una de las 10 pasadas del bucle for

Tenéis todo el código en:

https://github.com/rogama/Android---Tareas-Asincronas

Espero os sirva de ayuda

sábado, 31 de mayo de 2014

Preprocesadores JS

Hoy simplemente os traigo una pregunta; acabo de terminar la lectura del Pequeño gran libro  de CoffeScript si todavía no lo habéis leído os recomiendo su lectura, por lo que lo primero es dar las gracias a Javi Jimenez por escribirlo y mas aun dejándolo gratis aunque con posibilidad de donación, que sin duda vale los 5$ que el sugiere o mas.
Por otro lado hoy en día esta en la boca de todo el mundo el uso de los preprocesadores, los hay para CSS como SASS o LESS que ya hablamos en algún apartado de ellos, especialmente de LESS, los tenemos para HTML como HAMM, y para JS, que sinceramente soy un novato en este tema y no he encontrado gran información, aparte de CoffeScript.

La pregunta que quiero lanzaros es
¿Vosotros usáis preprocesadores de algún tipo en vuestros desarrollos?
¿Cuales?¿Por Que?

Sobre preprocesadores JS, ¿Cuales conoces?¿Cual crees que acabara ganando la batalla?

jueves, 22 de mayo de 2014

Activar conexión por USB Galaxy S4

Aveces puede ocurrir que no nos reconoce nuestro PC al conectar por USB nuestro Galaxy S4.

  • Para solucionar esto deberemos ir al menu de marcacion, y alli teclear *#0808#
  • Seguido a esto se nos abrira una ventana en la que deberemos seleccionar AP, y en la parte inferior MTP

Habilitar menu desarrollador en Galaxy S4

Todos los que tenemos un Galaxy S4 e intentamos desarrollar con el, nos ha pasado, o pasara, que no encontramos el menu desarrollador, para asi poder habilitar la depuracion por USB, por lo que tenemos 2 opciones.
  1. Crear el APK e instalarlo con cada prueba
  2. Volvernos locos e intentar activarlo a cualquier coste
Si eres de los que les gusta el riesgo, toma la segunda opcion, para ello tenemos que seguir 3 pasos
  • Iremos a ajustes, y alli a la pertaña Mas
  • Bajaremos hasta la opcion Acerca del dispositivo
  • Buscaremos Numero de compilacion, y pulsaremos encima 7 veces (a partir de la 4 o 5 nos aparecera un mensaje "Toast" que nos dira cuantas veces nos hace falta seguir pulsando)
  • Si volvemos hacia atras, ya tenemos nuestro querido menu habilitado, tan solo tendremos que marcar las opciones que querramos


fuente:

sábado, 17 de mayo de 2014

java.lang.IllegalStateException: Could not find a method Close(View) in the activity - Android

Muchos de nosotros estamos acostumbrados a poner un botón de cerrar en nuestras vistas, dicho botón, lo solemos vincular en el método OnClick con un método Close, como en la siguiente linea.
android:onClick="Close"
Esto nos lleva a escribir un método similar al siguiente:
    public void Close() {
        finish();
    }
Pero ese código nos lanzara un error de este tipo:
java.lang.IllegalStateException: Could not find a method Close(View) in the activity 
Esto es debido a que probablemente por las prisas hallamos olvidado que nuestro método necesita que se le pase una vista, por lo que el código correcto seria:
    public void Close(View view) {
        finish();
    }

viernes, 16 de mayo de 2014

you need to use a theme.appcompat theme (or descendant) with this activity - Android

En ocasiones podemos encontrarnos con un error como este:
unable to start activity componentinfo
.....
you need to use a theme.appcompat theme (or descendant) with this activity
esto es debido a que probablemente estemos usando un tema personalizado en una Activity, que en realidad es un ActionBarActivity, esta ultima clase necesita usar el tema appCompat, por lo que deberemos ir a nuestro manifest, y editar el Theme de la actividad a lo siguiente
android:theme="@style/Theme.AppCompat" >
Aunque también podemos hacer que nuestra actividad extienda de Activity en lugar de ActionBarActivity, para ello habría que cambiar
public class MainActivity extends ActionBarActivity {
por
public class MainActivity extends Activity {
Escogeremos en cada caso la opción que mas nos interese

miércoles, 14 de mayo de 2014

Acceder a recursos de un Fragment desde un Activity mediante findById - Android

Hoy os dejo algo que me ha llevado un buen rato.
Todos los que aprendimos o hicimos nuestros pinitos hace ya algun tiempo con Android aprendimos que para "linkar" un elemento de una activity a nuestro archivo java, para poder trabajar con el, ya sea un botón, un Text View o cualquier otra cosa accediamos con un codigo similar a este.
salida = (TextView)findViewById(R.id.textView1);
Esto mismo normalmente lo colocabamos en el onCreate de nuestro Activity, pero desde hace ya algun tiempo lo que se viene usando son los Fragment, un fragment viene siendo una parte de lo que se va a ver en el Activity, puede ser el 100% o una pequeña parte, asi un Activity, puede estar formado por 1 o mas Fragment, en resumidas cuentas eso es lo que es.

Pues bien el problema esta en que si desde nuestro Activity, intentamos llamar a un textView que esta en nuestro Fragment como en el ejemplo superior, nos dara un error de tiempo de ejecucion, y si lo bicheamos un poco, veremos que aunque R.id.textView1 tiene un valor hexadecimal, a nuestra variable Salida sigue con null, esto es debido a que desde nuestra Activity no podemos acceder a los elementos del Fragment, para ello deberemos ir a la clase PlaceHolderFragment que nos ha creado Eclipse, y llamarlo desde alli como en el codigo que os dejo a continuación

    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {
        public PlaceholderFragment() {
        }
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container, false);
            entrada = (EditText)rootView.findViewById(R.id.numEntrada);
            salida = (TextView)rootView.findViewById(R.id.numSalida);
            return rootView;
        }
    }
Espero os sirva de ayuda

Tambien os dejo el ejemplo completo y funcionando
https://github.com/rogama/Android---vista-boton-fragment

asi era como se hacia sin los Fragment
https://github.com/rogama/Android/tree/master/MasVistas

viernes, 25 de abril de 2014

Tienda en blanco al cambiar de servidor - prestashop

Llevo una temporada migrando una web a otro servidor, hoy estaba con la parte de la tienda, la cual esta montada en Prestashop, he copiado todos los archivos al nuevo server, y la base de datos, pero para mi sorpresa me encontre con que al entrar a la web me carga una pagina en blanco


no puedo entrar ni al administrador, si tecleo la URL obtengo el mismo resultado, rebuscando por hay sugerian:

  • dar permisos a las carpetas
  • borrar carpeta cache
  • me asegurado que en la base de datos apunte al "nuevo dominio"
Pero Sigue sin funcionar

no es cosa del .htaccess ya que lo he renombrado y sigo con el mismo problema

Cambio el valor de:
define('_PS_MODE_DEV_', true);
estaba en false en el archivo config/defines.inc.php

Y me da error:
Fatal error: Uncaught Table '*****_2013.****_shop_url' doesn't exist
Asi que reimportare la base de datos.

Y Solucionado!!!

jueves, 24 de abril de 2014

Fatal error: Uncaught exception 'Mailchimp_ServerError_MethodUnknown' - Mailchimp - PHP

Despues Del error que describo en: http://www.rogamainformatica.es/2014/04/fatal-error-uncaught-exception.html me aparecio este otro:
Fatal error: Uncaught exception 'Mailchimp_ServerError_MethodUnknown' with message 'Unknown method "lists/*******"' in C:\xampp\htdocs\*******\dashboard\mailchimp\src\Mailchimp.php:340 Stack trace: #0 C:\xampp\htdocs\******\dashboard\mailchimp\src\Mailchimp.php(319): Mailchimp->castError(Array) #1 C:\xampp\htdocs\**********\dashboard\test.php(6): Mailchimp->call('lists/********', '') #2 {main} thrown inC:\xampp\htdocs\*******\dashboard\mailchimp\src\Mailchimp.php on line 340

Este ultimo es simplemente por como lo llamamos
estaba usando
$lista = $mailchimp->call('list/list');
print_r($lista);
en vez de
print_r($mailchimp->call('lists/list',''));