Snippets Esenciales de Código Android: Tutorial Práctico para Desarrolladores
Componentes de Interfaz de Usuario (UI)
Para los Radio Group
RadioGroup rg = ...;
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group, int checkedId) {
// Hacer algo...
}
});Para los Check Box
CheckBox cb = ...;
cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// Hacer algo! Sabemos quién ha sido pulsado y su estado
}
});Crear Toast
Context contexto = getApplicationContext();
int duracion = Toast.LENGTH_SHORT; // Toast.LENGTH_LONG
Toast toast = Toast.makeText(contexto, R.string.recurso, duracion);
toast.show();Crear Cuadros de Diálogo
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setMessage(R.string.id);
alert.setPositiveButton(android.R.string.ok, null);
alert.show();Manejo de Intents y Navegación entre Actividades
Iniciar una Segunda Ventana
Intent i = new Intent(this, SecondaryActivity.class);
startActivity(i);Ejecutar Acción del Sistema
public void onBotonEjecutar(View v) {
Intent i = new Intent();
i.setAction(Intent.ACTION_POWER_USAGE_SUMMARY);
startActivity(i);
}Paso de Datos entre Actividades
1º Ventana (Envío)
Intent i = new Intent(this, SecondaryActivity.class);
i.putExtra("nombre", elNombre); // Sacado del EditText
startActivity(i);2º Ventana (Recepción)
String nombre = getIntent().getStringExtra("nombre");
String saludo = getResources().getString(R.string.idStr);
saludo = String.format(saludo, nombre);
TextView etiqueta = (TextView) findViewById(R.id.idLabel);
etiqueta.setText(saludo);Recoger Datos de la 2ª Ventana y Mandarlos a la 1ª
Llamada desde la 1ª Ventana
startActivityForResult(i, SECONDARY_ACTIVITY_TAG);Código en la 2º Ventana
String respuesta;
EditText et = (EditText) findViewById(R.id.etRespuesta);
respuesta = et.getText().toString();
Intent datos = new Intent();
datos.putExtra("respuesta", respuesta);
setResult(RESULT_OK, datos);
finish();Código en la 1ª Ventana (Resultado)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
String respuesta;
if ((resultCode == RESULT_CANCELED) || (data.getStringExtra("respuesta").equals(""))) {
respuesta = getResources().getString(R.string.antipatico);
} else {
respuesta = data.getStringExtra("respuesta");
}
Context contexto = getApplicationContext();
Toast.makeText(contexto, respuesta, Toast.LENGTH_LONG).show();
}Ciclo de Vida y Persistencia de Datos
Guardar una Variable al Girar la Pantalla
private final static String STATE_NUM_VECES = "numVeces";
@Override
public void onSaveInstanceState(Bundle outInstance) {
super.onSaveInstanceState(outInstance);
outInstance.putInt(STATE_NUM_VECES, _numVeces);
}
private String getEtiquetaBoton() {
android.content.res.Resources res = getResources();
String numPulsados;
numPulsados = res.getQuantityString(R.plurals.numPulsaciones, _numVeces, _numVeces);
return numPulsados;
}
public void botonPulsado(View v) {
++_numVeces;
Button b = (Button) v;
b.setText(getEtiquetaBoton());
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pulsame);
if (savedInstanceState != null) {
_numVeces = savedInstanceState.getInt(STATE_NUM_VECES);
if (_numVeces != 0) {
Button b = (Button) findViewById(R.id.boton);
b.setText(getEtiquetaBoton());
}
}
}Almacenamiento en Ficheros
Lectura y Escritura
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_libro_visitas);
EditText et;
et = (EditText) findViewById(R.id.etNombre);
et.setOnKeyListener(new android.view.View.OnKeyListener() {
public boolean onKey(View v, int keyCode, android.view.KeyEvent event) {
if ((event.getAction() == android.view.KeyEvent.ACTION_DOWN) && (keyCode == android.view.KeyEvent.KEYCODE_ENTER)) {
onNuevoNombre();
return true;
}
return false;
}
});
actualizarVisitantes();
}
protected void onNuevoNombre() {
EditText et;
et = (EditText) findViewById(R.id.etNombre);
String nuevoNombre;
nuevoNombre = et.getText().toString();
if (nuevoNombre.trim().equals("")) {
muestraMensaje(R.string.errorNombre);
return;
}
try {
FileOutputStream fos;
fos = openFileOutput(NOMBRE_FICHERO, Context.MODE_PRIVATE | Context.MODE_APPEND);
java.io.OutputStreamWriter out;
out = new OutputStreamWriter(fos);
out.write(nuevoNombre + "\n");
out.close();
muestraMensaje(R.string.bienvenido);
actualizarVisitantes();
} catch (Exception e) {
muestraMensaje(R.string.errorRegistro);
}
InputMethodManager imm;
imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(et.getWindowToken(), 0);
et.requestFocus();
et.setText("");
}
protected void actualizarVisitantes() {
StringBuilder strBuild = new StringBuilder();
TextView tv;
tv = (TextView) findViewById(R.id.etVisitantes);
try {
String visitante;
FileInputStream fis;
fis = openFileInput(NOMBRE_FICHERO);
Scanner scanner = new Scanner(fis);
if (scanner.hasNextLine()) {
visitante = scanner.nextLine();
strBuild.append(visitante);
}
while (scanner.hasNextLine()) {
visitante = scanner.nextLine();
strBuild.append("\n" + visitante);
}
scanner.close();
tv.setText(strBuild.toString());
} catch (Exception e) {
muestraMensaje(R.string.errorVisitantes);
}
}Hardware y Sensores
Vibración
Vibrator vibrator;
vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
vibrator.vibrate(100);Permiso necesario en el Manifest:
<uses-permission android:name="android.permission.VIBRATE"/>Sensores
SensorManager sm;
sm = (SensorManager) getSystemService(SENSOR_SERVICE);