Snippets Esenciales de Código Android: Tutorial Práctico para Desarrolladores

Informática y Telecomunicaciones7,15 KB

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);

Descargar

PDF Word HTML