Wednesday, May 30, 2012

Pasando parámetros a un Intent en Android

Hay distintas maneras de lograr esto (como en todo).  De las formas más sencillas es pasando datos como extras. Aquí el siguiente ejemplo:


Intent myIntent = new Intent(this, MICLASE.class);

myIntent.putExtra("una_llave", "valor_a_pasar");

startActivity(myIntent);

Más información de: putExtra()

Luego en la clase MICLASE.java se pueden recuperar así:

dentro del método onCreate(...)


Bundle bundle = getIntent().getExtras();

 if(bundle.getString("una_llave")!= null)
 {

     //TODO hacer lo que se quiera con el string
 }


Bookmark and Share

Buscar archivos en Linux que contengan cierto texto

Si quieren buscar un archivo en Linux que contengan cierto texto. Inicien una consola y diríjanse a la carpeta padre donde quieren buscar. Luego ingresen el siguiente comando:

find . | xargs grep 'texto' -sl

Pueden reemplazar donde dice "texto" por el texto que quieren buscar.

Bookmark and Share

Wednesday, May 16, 2012

Agregar todos los archivos que no han sido versionados a SVN

En  ubuntu se pueden agregar todos los archivos que no han sido versionados con una simple linea de comando:

svn add . --force

o bien:

svn status | grep -v "^.[ \t]*\..*" | grep "^?" | awk '{print $2}' | xargs svn add


No se si sea la mejor opción, pero hace el trabajo que uno necesita.
Se pueden encontrar otras alternativas aquí.

Bookmark and Share

Monday, May 7, 2012

Utlizando tildes y 'ñ' en controladores de RoR

Si en su base de datos y parámetros utlizan palabras con tildes y con 'ñ' deben asegurarse que se está codificando en utf-8.

En particular, para que un controlador acepte estos caracteres, deben colocar:

#coding: utf-8
al inicio del controlador, antes de class MiController < ApplicationController

Bookmark and Share

Sunday, April 15, 2012

Rellenando un spinner manualmente (Android)

Hay distintas formas para llenar un spinner en Android. En la página de desarrolladores de Android, hay un tutorial para llenar un spinner a través de una lista estática creada en la carpeta de recursos, pero qué pasa si uno la quiere llenar de forma dinámica, donde los valores que se incluyan dependen de cierto parámetro?
Para este problema encontré un tutorial muy bueno, fácil y rápido para solucionar este problema.

Primero, debemos crear un adpatador del tipo CharSequence donde agregaremos los items que queremos. Para eso tenemos las siguientes lineas de código:

 ArrayAdapter <CharSequence> adapter =
  new ArrayAdapter <CharSequence> (this, android.R.layout.simple_spinner_item );
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

No deben cambiar nada de lo de arriba.
Luego deben agregar los itemes a mostrar de la forma

adapter.add("item 1");

Luego asignamos estos datos al spinner que queremos:


Spinner s = (Spinner) findViewById(R.id.mi_spinner);

        		s.setAdapter(adapter);


y listo!

Bookmark and Share

Friday, April 6, 2012

Diálogo de selección multiple

Encontré un excelente tutorial para crear diálogos de multiselección en Android, lo comparto con ustedes aquí un poco modificado y con algunos comentarios y sugerencias para que no tengan los mismos problemas que yo:


Primero, deben decidir desde donde quieren mostrar este diálogo, es decir qué quieren que gatille el diálogo. Puede ser un botón cualquiera, un botón  en el menú de opciones o puedes querer que se gatille cada vez que se inicie una nueva actividad (un Intent nuevo).

Independiente de cómo quieran que se gatille, deben realizar la misma llamada en los correspondientes métodos donde se gatillan las actividades de cada una de las cosas de arriba. Es decir, para el caso del botón colocarlo en el OnClick(...), en el caso del menú de opciones en el onOptionsItemSelected(...) y en el caso de una actividad, en el onCreate(...). Lo que deben colocar es:

showDialog( 0 );

Antes de crear el diálogo. Debemos crear un arreglo de las opciones a mostrar en el diálogo como atributos de la clase, de esta manera:

public CharSequence[] dialogOptions = {"opción 1", "opción 2", "opción 3"};
y también crear un arreglo de booleanos donde se guardará la información sobre las opciones seleccionadas. Este segundo arreglo debe tener el mismo largo:

public boolean[] dialogSelections =  new boolean[ dialogOptions.length ];
Luego se deben crear 3 métodos, en la misma clase donde se llama a showDialogo(0);
El primero crea el diálogo:


@Override

 protected Dialog onCreateDialog( int id ) {

  return new AlertDialog.Builder( this )
          .setTitle( "Título del diálogo")
                .setMultiChoiceItems( dialogOptions, dialogSelections, new DialogSelectionClickHandler() )
                .setPositiveButton( "OK", new DialogButtonClickHandler() )
                .create();
 }



en el setMultiChoiceItems, se le entregan las opciones a desplegar, el arreglo donde guardar la selección y un Handler que puede realizar algo cada vez que se seleccionar una opción. Este último es algo así:


public class DialogSelectionClickHandler implements OnMultiChoiceClickListener {

  @Override

  public void onClick(DialogInterface arg0, int arg1, boolean arg2{
    //no hace nada por ahora
   //si se saca la selección no funciona
  }
 }

Si no necesitan hacer nada, le recomiendo que lo coloquen igual. Al menos a mi no me guardaba la selección a menos que tuviera el método creado.

Por último, el método que realiza la acción una vez que se hace click en el botón "aceptar" u "ok", como le hayan llamado. Este es el método:


public class DialogButtonClickHandler implements DialogInterface.OnClickListene {

  public void onClick( DialogInterface dialog, int clicked ) {

   switch( clicked ) {
    case DialogInterface.BUTTON_POSITIVE:
     //realizan sus acciones acá.

     break;
   }
  }
 }

Eso es todo.


Bookmark and Share

Saturday, March 31, 2012

Cargando datos iniciales en el ambiente de producción

Si han cargado datos en el archivo seed.rb de rails y desean cargar estos datos en el ambiente de producción en lugar de el de desarrollo. No basta con correr rake db:seed, deben indicarle a rails que quieren correr los datos en la base de datos de producción. Esto se hace con este sencillo código:

 rake db:seed RAILS_ENV=production

Recuerden estar en la carpeta adecuada de su aplicación.

Bookmark and Share
Related Posts Plugin for WordPress, Blogger...