Array
(
    [0] => Array
        (
            [nombre] => Jaime David
            [texto] => Otro otro al correo pavarotty_91@hotmail.com
se les agradecera [fecha] => 7 de marzo de 2011 - 16:28 ) [1] => Array ( [nombre] => Colombiano [texto] => Se ve bueno el ejemplo, lo estoy haciendo con eclipse pero en la linea 16 no se reconoce la clase R?
public void onCreate(Bundle savedInstanceState) {
16 super.onCreate(savedInstanceState);
17 setContentView(R.layout.main); [fecha] => 16 de mayo de 2011 - 22:20 ) [2] => Array ( [nombre] => colombiano [texto] => perdon linea 17 la clase R [fecha] => 16 de mayo de 2011 - 22:21 ) [3] => Array ( [nombre] => Imaginanet [texto] => Parece que no tienes correctamente configuradas las rutas a las librerías de desarrollo de Android dentro de Eclipse, ya que el objeto R pertenece a la base de las librerías Java:
http://developer.android.com/reference/android/R.html
¿Has seguido la documentación para que Eclipse tenga configurado correctamente las rutas? Siguiendo el siguiente enlace para instalar el SDK de Android no deberías tener problemas:
http://developer.android.com/sdk/installing.html [fecha] => 17 de mayo de 2011 - 09:02 ) [4] => Array ( [nombre] => daniel-89 [texto] => buenisimo..!!! justo lo que estoy buscando... ya que soy principiante en la programacion en android, grax..!! [fecha] => 22 de mayo de 2011 - 00:21 ) [5] => Array ( [nombre] => carlos navas [texto] => hola. disculpa la molestia. por casualidad tienen algun codigo de un software con navegaciones con ventanas, combobox y otros tipos de controles? desde ya muchas gracias. mi mail es carlosnavas1986@gmail.com [fecha] => 3 de julio de 2011 - 00:38 ) [6] => Array ( [nombre] => Ismael [texto] => Me estoy iniciando en esto y me parece exelente no tendras una calculadora con mas funciones no se talvez cientifica, seria super, gracias por todo. rauli_20_5@hotmail.com [fecha] => 26 de julio de 2011 - 04:37 ) [7] => Array ( [nombre] => Imaginanet [texto] => Respecto a los dos anteriores comentarios:
Hola Carlos, seguiremos ampliando esta sección sobre Android con el tiempo, de momento puedes revisar la sección de ejemplos de Android
http://developer.android.com/resources/browser.html?tag=tutorial
Respecto al comentario de Ismael, a partir de aquí puedes hacer uso de todas las funciones matemáticas de Java, por ejemplo:
http://download.oracle.com/javase/6/docs/api/java/lang/Math.html
o si quieres algo más complejo siempre se puede programar.
Un saludo. [fecha] => 26 de julio de 2011 - 10:47 ) [8] => Array ( [nombre] => alvaro [texto] => amigo esta muy bueno lo compile corrio y todo pero no me cambia el resultado undo los botones y nada que puede ser [fecha] => 17 de agosto de 2011 - 09:08 ) [9] => Array ( [nombre] => Fernando [texto] => Me obliga a forzar cierre!, ni siquiera alcanza a mostrar los botones... [fecha] => 21 de octubre de 2011 - 19:03 ) [10] => Array ( [nombre] => alejo [texto] => Excelente!!! compila completamente, buen código para empezar en andriod... [fecha] => 25 de octubre de 2011 - 22:41 ) [11] => Array ( [nombre] => Angelx [texto] => Muy bueno, gracias. [fecha] => 6 de noviembre de 2011 - 17:22 ) [12] => Array ( [nombre] => Jorge Cu [texto] => hola que tal, excelente tu post pero apenas estoy empezando y estgaria padre que dieras un how to desde un principio de abrir las ventanas y eso, por que me costo algo de trabajo y tengo un error en estas lineas del package de java de la 19 ala 23 te agradeseria tu ayuda.....felicidades [fecha] => 10 de noviembre de 2011 - 02:44 ) [13] => Array ( [nombre] => Imaginanet [texto] => Hola Jorge, creo que deberías empezar por leerte el tutorial oficial del hello world:
http://developer.android.com/resources/tutorials/hello-world.html
y después
http://developer.android.com/resources/tutorials/views/index.html
Saludos [fecha] => 10 de noviembre de 2011 - 08:51 ) [14] => Array ( [nombre] => merry [texto] => hola buen aporte pero me sale erro en R.id.op_a y R.id.op_b
el error es en .id haver si me ayudas xq este error [fecha] => 23 de noviembre de 2011 - 00:53 ) [15] => Array ( [nombre] => kei [texto] => alguien sabe como enlazar una pagina web usando android sobre eclipse? [fecha] => 30 de noviembre de 2011 - 06:01 ) [16] => Array ( [nombre] => alvaro [texto] => y despues como se publica en android market?? [fecha] => 29 de noviembre de 2011 - 18:41 ) [17] => Array ( [nombre] => Imaginanet [texto] => Hola Álvaro, puedes publicar tu aplicación en Android Market según las instrucciones del portal de desarrolladores de Android:
http://developer.android.com/ [fecha] => 30 de noviembre de 2011 - 13:13 ) [18] => Array ( [nombre] => jose dueñas [texto] => hey fijate que quise agregarle a tu app raiz cuadrada y cubica usando la formula this.valor_c ^(1/2) y no me da resultado correcto.. ayuda [fecha] => 4 de diciembre de 2011 - 04:19 ) [19] => Array ( [nombre] => Imaginanet [texto] => Hola José,
Para hacer uso de raíces cuadradas y exponenciales es mejor hacer uso de la función pow de la librería Math.
Por ejemplo para hacer 2^3 sería:
double resultado = Math.pow(2,3);
En el caso de la raíz cuadrada hay una limitación para raíces cuadradas de 2 y 3 (no para radicales superiores) en el que debemos hacer uso de la funciones Math.sqrt() y Math.cbrt() respectivamente, donde previamente deberás haber hecho import java.lang.Math
Puedes encontrar más información en http://developer.android.com/reference/java/lang/Math.html
Saludos. [fecha] => 5 de diciembre de 2011 - 08:28 ) [20] => Array ( [nombre] => arturo zamora [texto] => no jala tu aplicacion, marca error y esta como tu lo hiciste, me dice que la aplicacion se ha interrumpido [fecha] => 25 de diciembre de 2011 - 02:07 ) [21] => Array ( [nombre] => arturo [texto] => le cambio el nombre al id, del operando a y todo lo que esta abajo del primer textview, me lo sube, por que???? [fecha] => 25 de diciembre de 2011 - 01:00 ) [22] => Array ( [nombre] => Imaginanet [texto] => Hola Arturo,nn
Respecto a que la aplicación se ha interrumpido, ejecútala desde Eclipse y en la consola de debug te mostrará la interrupción que se ha producido.nn
Respecto a que se te mueve todo tras modificar el ID, ten en cuenta que el res/layout/main.xml sigue buscando a ese botón, por lo que debes cambiar el ID en los dos sitios. [fecha] => 3 de enero de 2012 - 07:59 ) [23] => Array ( [nombre] => RUlo [texto] => hola me podrías poner las fuentes de la aplicación porfavor [fecha] => 21 de enero de 2012 - 21:22 ) [24] => Array ( [nombre] => leo [texto] => no suma -.-....todo lo demas..Ok =D [fecha] => 9 de febrero de 2012 - 18:03 ) [25] => Array ( [nombre] => Daniel [texto] => ola diskulpa me sale un error en R.id.op_a, R.id.op_b, R.id.resultado. podrias ayudarme gracias [fecha] => 18 de febrero de 2012 - 23:39 ) [26] => Array ( [nombre] => LeonardoCM87 [texto] => Genial es como programar en SWING [fecha] => 29 de febrero de 2012 - 18:46 ) [27] => Array ( [nombre] => Carlos [texto] => Para evitar el error de la R edita el el main.xml de tu proyecto en el workspace/tuproyecto/res/layout/mail.xml pones los valores indicados y listeilor. No debieras tener problemas Saludos !! [fecha] => 17 de marzo de 2012 - 04:31 ) [28] => Array ( [nombre] => Paspi [texto] => Men... gracias, estaba buscando la forma de hacer una calcu... y tu idea me sirvio mucho... lo estaba pensando de la forma dificil :D GRACIAS LOCO, SIGUE CON ESTE TIPO DE APORTES!!!! [fecha] => 10 de abril de 2012 - 08:57 ) [29] => Array ( [nombre] => Alberto [texto] => hola, buen aporte, tambien estaba viendo si alguien pudiera mandarme un ejemplo con textbox, combobox, navegacion entre pantallas, etc a mi correo mrrg89@hotmail.com gracias de antemano [fecha] => 20 de abril de 2012 - 08:43 ) [30] => Array ( [nombre] => led [texto] => oye por que me marca error en la linea 18 donde se asignan los objetos en estos parametros(R.id.op_a)
(R.id.op_b)
(R.id.resultado) [fecha] => 7 de junio de 2012 - 05:28 ) [31] => Array ( [nombre] => Esteban [texto] => Muy buen aporte pro me gustaria q me ayudes con el codigo fuente xq me sale un error ayuda xfavor...... [fecha] => 18 de junio de 2012 - 04:43 ) [32] => Array ( [nombre] => Cesar [texto] => Excelente aporte. Gracias. [fecha] => 16 de junio de 2012 - 21:32 ) [33] => Array ( [nombre] => diana [texto] => Hola buenas tardes, podrias colocar el archivo manifiest.xml.. Ya que me da un error al ejecutarlo (Unable to open stack trace file '/data/anr/traces.txt': Permission denied).. Gracias [fecha] => 12 de julio de 2012 - 22:56 ) [34] => Array ( [nombre] => Imaginanet - Carlos [texto] => Hola Diana, parece un problema de permisos, ¿podrías darle permisos de escritura al archivo que comentas? [fecha] => 13 de julio de 2012 - 07:54 ) [35] => Array ( [nombre] => David C [texto] => funciona perfecto muchas gracias [fecha] => 16 de julio de 2012 - 17:53 ) [36] => Array ( [nombre] => Al [texto] => Thank you very much !!! [fecha] => 24 de julio de 2012 - 18:44 ) [37] => Array ( [nombre] => patricio [texto] => muy bueno!
tengo un par de dudas, todas las clases que se crean deben ser hijos de la clase Activity? y la otra, para pasar informacion de una clase a otra hay que usar los Intents, eso es siempre o cuando por ejemplo se desea crear otra Activity? [fecha] => 2 de agosto de 2012 - 06:57 ) [38] => Array ( [nombre] => Juan Pablo [texto] => Hola imaginanet,
Está buenísimo este código que dejaste, muchas gracias por eso. Estoy comenzando a programar para Android y me dejaron la tarea de realizar una calculadora; que deleite poder toparme con esto.
Bendiciones. [fecha] => 2 de agosto de 2012 - 06:20 ) [39] => Array ( [nombre] => Imaginanet - Carlos [texto] => Hola Patricio, sí, así es. [fecha] => 21 de agosto de 2012 - 12:01 ) [40] => Array ( [nombre] => Yan C: [texto] => Gracias por este post! [fecha] => 13 de septiembre de 2012 - 06:42 ) [41] => Array ( [nombre] => Sergio [texto] => Hola Muy Bueno, ahora tengo una duda, una vez creada y funcionando perfectamente, como la instalo en mi android, he buscado en la ruta Proyecto/bin y he encontrado Calculadora.apk , la he copiado en mi Android pero a la hora de ejecutarla no hace nada, te agradezco la ayuda [fecha] => 19 de septiembre de 2012 - 22:43 ) [42] => Array ( [nombre] => Sergio [texto] => Hola Muy Bueno, ahora tengo una duda, una vez creada y funcionando perfectamente, como la instalo en mi android, he buscado en la ruta Proyecto/bin y he encontrado Calculadora.apk , la he copiado en mi Android pero a la hora de ejecutarla no hace nada, te agradezco la ayuda [fecha] => 20 de septiembre de 2012 - 19:44 ) [43] => Array ( [nombre] => Imaginanet - Carlos [texto] => Hola Sergio, en la siguiente URL puedes encontrar más información de qué hacer con los APK:
http://www.pedroventura.com/software/como-instalar-un-apk-en-android/
Saludos. [fecha] => 20 de septiembre de 2012 - 08:28 ) [44] => Array ( [nombre] => Juan David Ramirez [texto] => Viejo esta buenisimo el ejemplo, pero tengo un inconveniente con el codigo me aparece el siguiente error: FATAL EXCEPTION MAIN nos e que sea la verdad por ejemplo en la linea 17 donde colocaste setContentView(R.layout.main); a mi me toco colocar setContentView(R.layout.activity_calculadora); me pdorias colaborar con eso? Muchisimas gracias [fecha] => 3 de octubre de 2012 - 04:12 ) [45] => Array ( [nombre] => ohm [texto] => Juan David Ramirez a mi me sucedía lo mismo, eso sucede cuando copias y pegas el código completo, lo que tienes que hacer es parte del codigo en su lugar teniendo en cuenta los corchetes, el setContentView(R.layout.main); no lo tienes que cambiar. quedaria asi:
package com.example.capitales; "en vez de capitales el nombre de tu proyecto, creeria que calculadora.
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class Capitales extends Activity {
private double valor_a, valor_b;
private EditText op_a, op_b;
private TextView resultado;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.op_a = (EditText) findViewById(R.id.op_a);
this.op_b = (EditText) findViewById(R.id.op_b);
this.resultado = (TextView) findViewById(R.id.resultado);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public void cSumar(View view) {
if(this.op_a.getText().toString().length() > 0 && this.op_b.getText().toString().length() > 0) {
this.valor_a = Double.parseDouble(this.op_a.getText().toString());
this.valor_b = Double.parseDouble(this.op_b.getText().toString());
this.resultado.setText(Double.toString((this.valor_a + this.valor_b)));
}
}
public void cRestar(View view) {
if(this.op_a.getText().toString().length() > 0 && this.op_b.getText().toString().length() > 0) {
this.valor_a = Double.parseDouble(this.op_a.getText().toString());
this.valor_b = Double.parseDouble(this.op_b.getText().toString());
this.resultado.setText(Double.toString((this.valor_a - this.valor_b)));
}
}
public void cMultiplicar(View view) {
if(this.op_a.getText().toString().length() > 0 && this.op_b.getText().toString().length() > 0) {
this.valor_a = Double.parseDouble(this.op_a.getText().toString());
this.valor_b = Double.parseDouble(this.op_b.getText().toString());
this.resultado.setText(Double.toString((this.valor_a * this.valor_b)));
}
}
public void cDividir(View view) {
if(this.op_a.getText().toString().length() > 0 && this.op_b.getText().toString().length() > 0) {
this.valor_a = Double.parseDouble(this.op_a.getText().toString());
this.valor_b = Double.parseDouble(this.op_b.getText().toString());
if(this.valor_b != 0) {
this.resultado.setText(Double.toString((this.valor_a / this.valor_b)));
}
else {
this.resultado.setText("Infinito");
}
}} } [fecha] => 20 de octubre de 2012 - 21:46 ) [46] => Array ( [nombre] => Estefan Menocal [texto] => Como instalo android en mi compu?? o donde descargo el id para programar en android y eclipse [fecha] => 23 de octubre de 2012 - 16:42 ) [47] => Array ( [nombre] => Imaginanet - Carlos [texto] => Hola Estefan, en el artículo se describe como realizarlo. Sigue los pasos. [fecha] => 27 de octubre de 2012 - 17:13 ) [48] => Array ( [nombre] => Rogelio [texto] => Disculpa estaba probando tu codigo y mi computadora detiene la aplicacion... dice Unafortulately Calculadora has stopped... y no hace ni una operacion... [fecha] => 24 de noviembre de 2012 - 02:54 ) [49] => Array ( [nombre] => genaro [texto] => Excelente!!!! [fecha] => 27 de noviembre de 2012 - 23:20 ) [50] => Array ( [nombre] => Saya [texto] => Funciono muy bien gracias [fecha] => 17 de diciembre de 2012 - 03:09 ) [51] => Array ( [nombre] => Benjamin Jaramillo [texto] => No funciona he revisado la ruta, compile un ejercicio de hola mundo y funciono. Pero me sale el error de .R
¿Que podra ser...? Ya mire el xml, me voy a cortar las pelotas si no soy capaz de hacer este aplicativo. [fecha] => 3 de enero de 2013 - 04:28 ) [52] => Array ( [nombre] => Alvaro [texto] => Hola! Muy buena, me ha servido para entender algunas cosillas de Android. Lo que no entiendo es porque tanto "this". Por no hace falta ¿no? [fecha] => 20 de enero de 2013 - 14:05 ) [53] => Array ( [nombre] => Ubaldo [texto] => holis! :DD me funcionó muy bien el ejemplo! opaqué a mi compañero ;) [fecha] => 13 de febrero de 2013 - 21:27 ) [54] => Array ( [nombre] => Any [texto] => Hombre, sos lo máximo gracias por la ayuda. [fecha] => 2 de marzo de 2013 - 11:02 ) [55] => Array ( [nombre] => Watson [texto] => yo hasta aqui voy bien pero cual seria el codigo para agregar raiz y potencia [fecha] => 16 de marzo de 2013 - 07:53 ) [56] => Array ( [nombre] => paco [texto] => la linea "if(this.valor_b != 0)" <-- no tiene sentido porque nunca sera 0 ya que en la condicion anterior has dicho que sea mayor que cero. [fecha] => 10 de abril de 2013 - 19:54 ) [57] => Array ( [nombre] => alma [texto] => oo grax. fue de gran ayuda !! [fecha] => 17 de abril de 2013 - 23:14 ) [58] => Array ( [nombre] => Ysrael [texto] => EXELENTE!!!! fue de gran utilidad ;) thanks [fecha] => 18 de abril de 2013 - 09:57 ) [59] => Array ( [nombre] => Alex-Estrada [texto] => Excelente aportacion para los que no estamos tan familiarizados con Java, es cuestion solo de aprender a manejar las class y adelante. Felicidades corrio sin problemas [fecha] => 8 de agosto de 2013 - 18:04 ) [60] => Array ( [nombre] => Daniel [texto] => oye en esta parte me marca error:
// Asignamos los objetos
this.op_a = (EditText) findViewById(R.id.op_a);
this.op_b = (EditText) findViewById(R.id.op_b);
this.resultado = (TextView) findViewById(R.id.resultado);
graciias [fecha] => 12 de octubre de 2013 - 03:11 ) [61] => Array ( [nombre] => SOSA [texto] => MUY BUENO :D [fecha] => 29 de octubre de 2013 - 03:32 ) [62] => Array ( [nombre] => kokuis [texto] => Excelente post me fue de mucha ayuda ;) Gracias. [fecha] => 12 de noviembre de 2013 - 15:41 ) [63] => Array ( [nombre] => Victor Martinez [texto] => Hola, en el emulador me da cierre forzozo y la instalo en el movil y pasa lo mismo :-( [fecha] => 31 de enero de 2014 - 02:07 ) [64] => Array ( [nombre] => sofia [texto] => esto es muy bueno me salió perfecto justo lo que necesitaba(: [fecha] => 6 de marzo de 2014 - 22:23 ) [65] => Array ( [nombre] => ChioOrme [texto] => Tengo un error en la linea 17, me sale punteado el main de la clase R. Ya instale el sdk siguiendo el tuto paso a paso.
Me ayudas con eso?? soy principiante :/ [fecha] => 6 de marzo de 2014 - 21:19 ) [66] => Array ( [nombre] => Danny Coral [texto] => Lo maximo mi estimado te doy un 100/100 excelente ejemplo
Saludos. [fecha] => 17 de marzo de 2014 - 14:20 ) [67] => Array ( [nombre] => Diego [texto] => Los codigos no me generan ningun error pero al momento de ejecutar la aplicacion en el emulador me genera un cierre forzoso y no abre, me puedes ayudar con ese error por favor [fecha] => 20 de marzo de 2014 - 17:19 ) [68] => Array ( [nombre] => andrea arango [texto] => Hola buen aporte.. quisiera saber por que me sale un error en el main
setContentView(R.layout.main);(R.layout.main); [fecha] => 8 de mayo de 2014 - 22:20 ) [69] => Array ( [nombre] => Jorge [texto] => Donde pego el codigo ?? :/ estoy perdido ayuda porfavor [fecha] => 26 de mayo de 2014 - 18:49 ) [70] => Array ( [nombre] => CECI [texto] => ESTA CHINGOOOONNNNNN [fecha] => 27 de mayo de 2014 - 14:25 ) [71] => Array ( [nombre] => eleduarr [texto] => hola, me gustaría saber como hacer cuando el numero es muy grande o muy chico,para que aparezca completo sin la "e". [fecha] => 15 de junio de 2014 - 05:08 ) [72] => Array ( [nombre] => victor [texto] => como lo puedo usar con netbeans? [fecha] => 26 de junio de 2014 - 21:25 ) [73] => Array ( [nombre] => alex [texto] => crear una calculadora en android es muy fácil, yo ya la hice........ [fecha] => 30 de junio de 2014 - 15:44 ) [74] => Array ( [nombre] => Adrian [texto] => tengo un problema, no pude instalar la api 8 de android asi que me puse a provar con la 14, que cambios en el codigo se tiene que hacer? porque cuando ejecuto la aplicacion y presiono cualquiera de los botones dice "la aplicacion se a detenido" [fecha] => 18 de septiembre de 2014 - 23:43 ) [75] => Array ( [nombre] => luis [texto] => Hola soy nuevo en esto y me da los siguientes errores:
R.layout R.id.op_a R.id.op_b R.id.resultado.
sdktoolsantbuild.xml:629: Reference project.library.manifest.file.path not found.
BUILD FAILED (total time: 0 seconds)
Que puedo hacer, me poder enviar mas ejemplos.
Gracias [fecha] => 16 de octubre de 2014 - 00:31 ) [76] => Array ( [nombre] => raul [texto] => me marca error en :
android:text="Operando A:"/>
<EditText [fecha] => 11 de noviembre de 2014 - 21:21 ) )

Lunes, 13 de diciembre de 2010

Programando para Android: una sencilla aplicación

categoría: Apps Android Java

Vamos a hablar sobre como programar una aplicación para un dispositivo con Android que se va a tratar de una sencilla calculadora.

Como todos sabemos, Android se programa mediante el lenguaje de programación Java. Este ejemplo de la calculadora puede parecer demasiado básico, pero con una idea inicial de como hacer una pequeña aplicación para Android y nociones sobre Java, veremos que desarrollar un programa más complejo es muy fácil.

En primer lugar, necesitaremos el Android SDK que lo podemos descargar de http://developer.android.com/sdk/index.html

Tras instalarlo deberemos ejecutar el archivo android dentro de la carpeta tools y hacer lo siguiente:

  • Instalar la plataforma de la versión Android a emular, lo haremos desde la pestaña Available packages y elegiremos la versión que queramos (2.1, 2.2, 2.3, etc)
  • Crear un dispositivo virtual, pestaña Virtual devices, que será nuestro dispositivo a emular.

Como segundo paso, haremos uso de la plataforma Eclipse y su plugin ADT para el desarrollo de Android bajo Eclipse. Podemos hacerlo desde la dirección http://developer.android.com/sdk/eclipse-adt.html

Ahora nos quedaría configurar Eclipse para que supiera la ruta hasta el SDK de Android y tendríamos todo preparado para trabajar. Lo podemos hacer desde el menú Window -> Preferences y dentro de la ventana en la pestaña Android tenemos la opción SDK Location.

Ahora tenemos todo preparado y configurado para empezar a crear aplicaciones. La web del SDK de Android contiene varios ejemplo de como empezar a programar y el ejemplo más sencillo es el del "Hola Mundo" donde viene todo el proceso indicado arriba de forma más detallada (lo podéis encontrar aquí http://developer.android.com/resources/tutorials/hello-world.html).

Nosotros nos vamos a basar en uno un poco más avanzado y lo vamos a ampliar hasta crear una aplicación con cierta utilidad. Este ejemplo es el de como posicionar elementos con tamaños y posiciones relativas http://developer.android.com/resources/tutorials/views/hello-relativelayout.html y vamos a añadir algunos elementos y funcionalidades para crear nuestra sencilla calculadora.

Creando nuestra primera aplicación para Android

Para ver cual queremos que sea la interfaz final e intuir el funcionamiento, vamos a mostrar una captura de pantalla del resultado final en el emulador:

Programación para Android

donde podemos ver tres elementos: TextView (objeto para mostrar texto), EditText (caja de entrada de texto) y Button (botón).

Empezaremos creando en Eclipse un proyecto para Android, modificaremos el archivo res/layout/main.xml en su vista de código de fuente y pegaremos el siguiente código XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView
        android:id="@+id/label_a"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Operando A:"/>
    <EditText
        android:id="@+id/op_a"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@android:drawable/editbox_background"
        android:layout_below="@id/label_a"/>
     <TextView
        android:id="@+id/label_b"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/op_a"     
        android:text="Operando B:"/>
    <EditText
        android:id="@+id/op_b"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@android:drawable/editbox_background"
        android:layout_below="@id/label_b"/>       
    <Button
        android:id="@+id/sumar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/op_b"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="1dip"
		android:onClick="cSumar"        
        android:text="+" />
    <Button
        android:id="@+id/restar"    
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/sumar"
        android:layout_alignTop="@id/sumar"
		android:onClick="cRestar"             
        android:text="-" />
    <Button
        android:id="@+id/multiplicar"   
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/restar"
        android:layout_alignTop="@id/restar"
		android:onClick="cMultiplicar"            
        android:text="*" />
    <Button
        android:id="@+id/dividir"    
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/multiplicar"
        android:layout_alignTop="@id/sumar"
 		android:onClick="cDividir" 
        android:text="/" />   
    <TextView
        android:id="@+id/texto_resultado"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/dividir"                    
        android:text="Resultado:"/>              
    <TextView
        android:id="@+id/resultado"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/texto_resultado"          
        android:text="Realice operación para obtener resultado"/>                  
</RelativeLayout>

Los atributos relevantes para este ejemplo de cada elemento son:

  • android:id identificador de cada objeto
  • android:layout_width y android:layout_height, anchura y altura respectivamente
  • android:layout_below: indica si el objeto está debajo de otro
  • android:layout_toRightOf y android:layout_alignTop: indican si están varios elementos en la misma fila sobre qué objeto se coloca a su derecha y su posicionamiento en altura
  • android:text es el texto por defecto en cada elemento
  • android:onClick es el nombre del método público a ejecutar al pulsar ese botón. Este método debe ser obligatoriamente público y tener como parámetro de entrada la vista, ejemplo public void function cSumar(View view) { ... }.

ahora vamos a programar el funcionamiento de los objetos descritos en el archivo de extensión java creado para el proyecto:

package com.android.calculadora;

import android.app.Activity;
import android.os.Bundle;
import android.widget.*;
import android.view.*;

public class Calculadora extends Activity {
	
	// Instancias de objetos a usar
	private double valor_a, valor_b;
	private EditText op_a, op_b;
	private TextView resultado;
	
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        // Asignamos los objetos
        this.op_a = (EditText) findViewById(R.id.op_a);
        this.op_b = (EditText) findViewById(R.id.op_b);
        this.resultado = (TextView) findViewById(R.id.resultado);              
    }

    public void cSumar(View view) {
    	if(this.op_a.getText().toString().length() > 0 && this.op_b.getText().toString().length() > 0) {
        	this.valor_a = Double.parseDouble(this.op_a.getText().toString());
        	this.valor_b = Double.parseDouble(this.op_b.getText().toString());    
        	this.resultado.setText(Double.toString((this.valor_a + this.valor_b)));    		
    	}
    }

    public void cRestar(View view) {
    	if(this.op_a.getText().toString().length() > 0 && this.op_b.getText().toString().length() > 0) {
        	this.valor_a = Double.parseDouble(this.op_a.getText().toString());
        	this.valor_b = Double.parseDouble(this.op_b.getText().toString());    
        	this.resultado.setText(Double.toString((this.valor_a - this.valor_b)));    		
    	}
    }
    
    public void cMultiplicar(View view) {
    	if(this.op_a.getText().toString().length() > 0 && this.op_b.getText().toString().length() > 0) {
        	this.valor_a = Double.parseDouble(this.op_a.getText().toString());
        	this.valor_b = Double.parseDouble(this.op_b.getText().toString());    
        	this.resultado.setText(Double.toString((this.valor_a * this.valor_b)));    		
    	}
    }
    
    public void cDividir(View view) {
    	if(this.op_a.getText().toString().length() > 0 && this.op_b.getText().toString().length() > 0) {
        	this.valor_a = Double.parseDouble(this.op_a.getText().toString());
        	this.valor_b = Double.parseDouble(this.op_b.getText().toString());    
        	if(this.valor_b != 0) {
            	this.resultado.setText(Double.toString((this.valor_a / this.valor_b)));         		
        	}
        	else {
            	this.resultado.setText("Infinito");         		
        	}
    	}
    }       
}

El método onCreate se ejecuta al crear la aplicación y es donde asignamos los objetos declarados en el XML a objetos Java. Tras ello declaramos las funciones definidas en los atributos onClick de cada botón.

Por último nos quedaría ejecutarlo y probar el funcionamiento.

Conclusiones

Como hemos dicho, este ejemplo de una calculadora es un ejemplo muy sencillo pero podemos ver que con un poco de código y unas pequeñas nociones sobre Android SDK podemos sacar muchísimo provecho de nuestros conocimientos sobre Java.

77 comentarios:

Otro otro al correo pavarotty_91@hotmail.com
se les agradecera
comentario de Jaime David - 7 de marzo de 2011 - 16:28
Se ve bueno el ejemplo, lo estoy haciendo con eclipse pero en la linea 16 no se reconoce la clase R?
public void onCreate(Bundle savedInstanceState) {
16 super.onCreate(savedInstanceState);
17 setContentView(R.layout.main);
comentario de Colombiano - 16 de mayo de 2011 - 22:20
perdon linea 17 la clase R
comentario de colombiano - 16 de mayo de 2011 - 22:21
Parece que no tienes correctamente configuradas las rutas a las librerías de desarrollo de Android dentro de Eclipse, ya que el objeto R pertenece a la base de las librerías Java:
http://developer.android.com/reference/android/R.html
¿Has seguido la documentación para que Eclipse tenga configurado correctamente las rutas? Siguiendo el siguiente enlace para instalar el SDK de Android no deberías tener problemas:
http://developer.android.com/sdk/installing.html
comentario de Imaginanet - 17 de mayo de 2011 - 09:02
buenisimo..!!! justo lo que estoy buscando... ya que soy principiante en la programacion en android, grax..!!
comentario de daniel-89 - 22 de mayo de 2011 - 00:21
hola. disculpa la molestia. por casualidad tienen algun codigo de un software con navegaciones con ventanas, combobox y otros tipos de controles? desde ya muchas gracias. mi mail es carlosnavas1986@gmail.com
comentario de carlos navas - 3 de julio de 2011 - 00:38
Me estoy iniciando en esto y me parece exelente no tendras una calculadora con mas funciones no se talvez cientifica, seria super, gracias por todo. rauli_20_5@hotmail.com
comentario de Ismael - 26 de julio de 2011 - 04:37
Respecto a los dos anteriores comentarios:
Hola Carlos, seguiremos ampliando esta sección sobre Android con el tiempo, de momento puedes revisar la sección de ejemplos de Android
http://developer.android.com/resources/browser.html?tag=tutorial
Respecto al comentario de Ismael, a partir de aquí puedes hacer uso de todas las funciones matemáticas de Java, por ejemplo:
http://download.oracle.com/javase/6/docs/api/java/lang/Math.html
o si quieres algo más complejo siempre se puede programar.
Un saludo.
comentario de Imaginanet - 26 de julio de 2011 - 10:47
amigo esta muy bueno lo compile corrio y todo pero no me cambia el resultado undo los botones y nada que puede ser
comentario de alvaro - 17 de agosto de 2011 - 09:08
Me obliga a forzar cierre!, ni siquiera alcanza a mostrar los botones...
comentario de Fernando - 21 de octubre de 2011 - 19:03
Excelente!!! compila completamente, buen código para empezar en andriod...
comentario de alejo - 25 de octubre de 2011 - 22:41
Muy bueno, gracias.
comentario de Angelx - 6 de noviembre de 2011 - 17:22
hola que tal, excelente tu post pero apenas estoy empezando y estgaria padre que dieras un how to desde un principio de abrir las ventanas y eso, por que me costo algo de trabajo y tengo un error en estas lineas del package de java de la 19 ala 23 te agradeseria tu ayuda.....felicidades
comentario de Jorge Cu - 10 de noviembre de 2011 - 02:44
Hola Jorge, creo que deberías empezar por leerte el tutorial oficial del hello world:
http://developer.android.com/resources/tutorials/hello-world.html
y después
http://developer.android.com/resources/tutorials/views/index.html
Saludos
comentario de Imaginanet - 10 de noviembre de 2011 - 08:51
hola buen aporte pero me sale erro en R.id.op_a y R.id.op_b
el error es en .id haver si me ayudas xq este error
comentario de merry - 23 de noviembre de 2011 - 00:53
alguien sabe como enlazar una pagina web usando android sobre eclipse?
comentario de kei - 30 de noviembre de 2011 - 06:01
y despues como se publica en android market??
comentario de alvaro - 29 de noviembre de 2011 - 18:41
Hola Álvaro, puedes publicar tu aplicación en Android Market según las instrucciones del portal de desarrolladores de Android:
http://developer.android.com/
comentario de Imaginanet - 30 de noviembre de 2011 - 13:13
hey fijate que quise agregarle a tu app raiz cuadrada y cubica usando la formula this.valor_c ^(1/2) y no me da resultado correcto.. ayuda
comentario de jose dueñas - 4 de diciembre de 2011 - 04:19
Hola José,
Para hacer uso de raíces cuadradas y exponenciales es mejor hacer uso de la función pow de la librería Math.
Por ejemplo para hacer 2^3 sería:
double resultado = Math.pow(2,3);
En el caso de la raíz cuadrada hay una limitación para raíces cuadradas de 2 y 3 (no para radicales superiores) en el que debemos hacer uso de la funciones Math.sqrt() y Math.cbrt() respectivamente, donde previamente deberás haber hecho import java.lang.Math
Puedes encontrar más información en http://developer.android.com/reference/java/lang/Math.html
Saludos.
comentario de Imaginanet - 5 de diciembre de 2011 - 08:28
no jala tu aplicacion, marca error y esta como tu lo hiciste, me dice que la aplicacion se ha interrumpido
comentario de arturo zamora - 25 de diciembre de 2011 - 02:07
le cambio el nombre al id, del operando a y todo lo que esta abajo del primer textview, me lo sube, por que????
comentario de arturo - 25 de diciembre de 2011 - 01:00
Hola Arturo,nn
Respecto a que la aplicación se ha interrumpido, ejecútala desde Eclipse y en la consola de debug te mostrará la interrupción que se ha producido.nn
Respecto a que se te mueve todo tras modificar el ID, ten en cuenta que el res/layout/main.xml sigue buscando a ese botón, por lo que debes cambiar el ID en los dos sitios.
comentario de Imaginanet - 3 de enero de 2012 - 07:59
hola me podrías poner las fuentes de la aplicación porfavor
comentario de RUlo - 21 de enero de 2012 - 21:22
no suma -.-....todo lo demas..Ok =D
comentario de leo - 9 de febrero de 2012 - 18:03
ola diskulpa me sale un error en R.id.op_a, R.id.op_b, R.id.resultado. podrias ayudarme gracias
comentario de Daniel - 18 de febrero de 2012 - 23:39
Genial es como programar en SWING
comentario de LeonardoCM87 - 29 de febrero de 2012 - 18:46
Para evitar el error de la R edita el el main.xml de tu proyecto en el workspace/tuproyecto/res/layout/mail.xml pones los valores indicados y listeilor. No debieras tener problemas Saludos !!
comentario de Carlos - 17 de marzo de 2012 - 04:31
Men... gracias, estaba buscando la forma de hacer una calcu... y tu idea me sirvio mucho... lo estaba pensando de la forma dificil :D GRACIAS LOCO, SIGUE CON ESTE TIPO DE APORTES!!!!
comentario de Paspi - 10 de abril de 2012 - 08:57
hola, buen aporte, tambien estaba viendo si alguien pudiera mandarme un ejemplo con textbox, combobox, navegacion entre pantallas, etc a mi correo mrrg89@hotmail.com gracias de antemano
comentario de Alberto - 20 de abril de 2012 - 08:43
oye por que me marca error en la linea 18 donde se asignan los objetos en estos parametros(R.id.op_a)
(R.id.op_b)
(R.id.resultado)
comentario de led - 7 de junio de 2012 - 05:28
Muy buen aporte pro me gustaria q me ayudes con el codigo fuente xq me sale un error ayuda xfavor......
comentario de Esteban - 18 de junio de 2012 - 04:43
Excelente aporte. Gracias.
comentario de Cesar - 16 de junio de 2012 - 21:32
Hola buenas tardes, podrias colocar el archivo manifiest.xml.. Ya que me da un error al ejecutarlo (Unable to open stack trace file '/data/anr/traces.txt': Permission denied).. Gracias
comentario de diana - 12 de julio de 2012 - 22:56
Hola Diana, parece un problema de permisos, ¿podrías darle permisos de escritura al archivo que comentas?
comentario de Imaginanet - Carlos - 13 de julio de 2012 - 07:54
funciona perfecto muchas gracias
comentario de David C - 16 de julio de 2012 - 17:53
Thank you very much !!!
comentario de Al - 24 de julio de 2012 - 18:44
muy bueno!
tengo un par de dudas, todas las clases que se crean deben ser hijos de la clase Activity? y la otra, para pasar informacion de una clase a otra hay que usar los Intents, eso es siempre o cuando por ejemplo se desea crear otra Activity?
comentario de patricio - 2 de agosto de 2012 - 06:57
Hola imaginanet,
Está buenísimo este código que dejaste, muchas gracias por eso. Estoy comenzando a programar para Android y me dejaron la tarea de realizar una calculadora; que deleite poder toparme con esto.
Bendiciones.
comentario de Juan Pablo - 2 de agosto de 2012 - 06:20
Hola Patricio, sí, así es.
comentario de Imaginanet - Carlos - 21 de agosto de 2012 - 12:01
Gracias por este post!
comentario de Yan C: - 13 de septiembre de 2012 - 06:42
Hola Muy Bueno, ahora tengo una duda, una vez creada y funcionando perfectamente, como la instalo en mi android, he buscado en la ruta Proyecto/bin y he encontrado Calculadora.apk , la he copiado en mi Android pero a la hora de ejecutarla no hace nada, te agradezco la ayuda
comentario de Sergio - 19 de septiembre de 2012 - 22:43
Hola Muy Bueno, ahora tengo una duda, una vez creada y funcionando perfectamente, como la instalo en mi android, he buscado en la ruta Proyecto/bin y he encontrado Calculadora.apk , la he copiado en mi Android pero a la hora de ejecutarla no hace nada, te agradezco la ayuda
comentario de Sergio - 20 de septiembre de 2012 - 19:44
Hola Sergio, en la siguiente URL puedes encontrar más información de qué hacer con los APK:
http://www.pedroventura.com/software/como-instalar-un-apk-en-android/
Saludos.
comentario de Imaginanet - Carlos - 20 de septiembre de 2012 - 08:28
Viejo esta buenisimo el ejemplo, pero tengo un inconveniente con el codigo me aparece el siguiente error: FATAL EXCEPTION MAIN nos e que sea la verdad por ejemplo en la linea 17 donde colocaste setContentView(R.layout.main); a mi me toco colocar setContentView(R.layout.activity_calculadora); me pdorias colaborar con eso? Muchisimas gracias
comentario de Juan David Ramirez - 3 de octubre de 2012 - 04:12
Juan David Ramirez a mi me sucedía lo mismo, eso sucede cuando copias y pegas el código completo, lo que tienes que hacer es parte del codigo en su lugar teniendo en cuenta los corchetes, el setContentView(R.layout.main); no lo tienes que cambiar. quedaria asi:
package com.example.capitales; "en vez de capitales el nombre de tu proyecto, creeria que calculadora.
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class Capitales extends Activity {
private double valor_a, valor_b;
private EditText op_a, op_b;
private TextView resultado;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.op_a = (EditText) findViewById(R.id.op_a);
this.op_b = (EditText) findViewById(R.id.op_b);
this.resultado = (TextView) findViewById(R.id.resultado);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public void cSumar(View view) {
if(this.op_a.getText().toString().length() > 0 && this.op_b.getText().toString().length() > 0) {
this.valor_a = Double.parseDouble(this.op_a.getText().toString());
this.valor_b = Double.parseDouble(this.op_b.getText().toString());
this.resultado.setText(Double.toString((this.valor_a + this.valor_b)));
}
}
public void cRestar(View view) {
if(this.op_a.getText().toString().length() > 0 && this.op_b.getText().toString().length() > 0) {
this.valor_a = Double.parseDouble(this.op_a.getText().toString());
this.valor_b = Double.parseDouble(this.op_b.getText().toString());
this.resultado.setText(Double.toString((this.valor_a - this.valor_b)));
}
}
public void cMultiplicar(View view) {
if(this.op_a.getText().toString().length() > 0 && this.op_b.getText().toString().length() > 0) {
this.valor_a = Double.parseDouble(this.op_a.getText().toString());
this.valor_b = Double.parseDouble(this.op_b.getText().toString());
this.resultado.setText(Double.toString((this.valor_a * this.valor_b)));
}
}
public void cDividir(View view) {
if(this.op_a.getText().toString().length() > 0 && this.op_b.getText().toString().length() > 0) {
this.valor_a = Double.parseDouble(this.op_a.getText().toString());
this.valor_b = Double.parseDouble(this.op_b.getText().toString());
if(this.valor_b != 0) {
this.resultado.setText(Double.toString((this.valor_a / this.valor_b)));
}
else {
this.resultado.setText("Infinito");
}
}} }
comentario de ohm - 20 de octubre de 2012 - 21:46
Como instalo android en mi compu?? o donde descargo el id para programar en android y eclipse
comentario de Estefan Menocal - 23 de octubre de 2012 - 16:42
Hola Estefan, en el artículo se describe como realizarlo. Sigue los pasos.
comentario de Imaginanet - Carlos - 27 de octubre de 2012 - 17:13
Disculpa estaba probando tu codigo y mi computadora detiene la aplicacion... dice Unafortulately Calculadora has stopped... y no hace ni una operacion...
comentario de Rogelio - 24 de noviembre de 2012 - 02:54
Excelente!!!!
comentario de genaro - 27 de noviembre de 2012 - 23:20
Funciono muy bien gracias
comentario de Saya - 17 de diciembre de 2012 - 03:09
No funciona he revisado la ruta, compile un ejercicio de hola mundo y funciono. Pero me sale el error de .R
¿Que podra ser...? Ya mire el xml, me voy a cortar las pelotas si no soy capaz de hacer este aplicativo.
comentario de Benjamin Jaramillo - 3 de enero de 2013 - 04:28
Hola! Muy buena, me ha servido para entender algunas cosillas de Android. Lo que no entiendo es porque tanto "this". Por no hace falta ¿no?
comentario de Alvaro - 20 de enero de 2013 - 14:05
holis! :DD me funcionó muy bien el ejemplo! opaqué a mi compañero ;)
comentario de Ubaldo - 13 de febrero de 2013 - 21:27
Hombre, sos lo máximo gracias por la ayuda.
comentario de Any - 2 de marzo de 2013 - 11:02
yo hasta aqui voy bien pero cual seria el codigo para agregar raiz y potencia
comentario de Watson - 16 de marzo de 2013 - 07:53
la linea "if(this.valor_b != 0)" <-- no tiene sentido porque nunca sera 0 ya que en la condicion anterior has dicho que sea mayor que cero.
comentario de paco - 10 de abril de 2013 - 19:54
oo grax. fue de gran ayuda !!
comentario de alma - 17 de abril de 2013 - 23:14
EXELENTE!!!! fue de gran utilidad ;) thanks
comentario de Ysrael - 18 de abril de 2013 - 09:57
Excelente aportacion para los que no estamos tan familiarizados con Java, es cuestion solo de aprender a manejar las class y adelante. Felicidades corrio sin problemas
comentario de Alex-Estrada - 8 de agosto de 2013 - 18:04
oye en esta parte me marca error:
// Asignamos los objetos
this.op_a = (EditText) findViewById(R.id.op_a);
this.op_b = (EditText) findViewById(R.id.op_b);
this.resultado = (TextView) findViewById(R.id.resultado);
graciias
comentario de Daniel - 12 de octubre de 2013 - 03:11
MUY BUENO :D
comentario de SOSA - 29 de octubre de 2013 - 03:32
Excelente post me fue de mucha ayuda ;) Gracias.
comentario de kokuis - 12 de noviembre de 2013 - 15:41
Hola, en el emulador me da cierre forzozo y la instalo en el movil y pasa lo mismo :-(
comentario de Victor Martinez - 31 de enero de 2014 - 02:07
esto es muy bueno me salió perfecto justo lo que necesitaba(:
comentario de sofia - 6 de marzo de 2014 - 22:23
Tengo un error en la linea 17, me sale punteado el main de la clase R. Ya instale el sdk siguiendo el tuto paso a paso.
Me ayudas con eso?? soy principiante :/
comentario de ChioOrme - 6 de marzo de 2014 - 21:19
Lo maximo mi estimado te doy un 100/100 excelente ejemplo
Saludos.
comentario de Danny Coral - 17 de marzo de 2014 - 14:20
Los codigos no me generan ningun error pero al momento de ejecutar la aplicacion en el emulador me genera un cierre forzoso y no abre, me puedes ayudar con ese error por favor
comentario de Diego - 20 de marzo de 2014 - 17:19
Hola buen aporte.. quisiera saber por que me sale un error en el main
setContentView(R.layout.main);(R.layout.main);
comentario de andrea arango - 8 de mayo de 2014 - 22:20
Donde pego el codigo ?? :/ estoy perdido ayuda porfavor
comentario de Jorge - 26 de mayo de 2014 - 18:49
ESTA CHINGOOOONNNNNN
comentario de CECI - 27 de mayo de 2014 - 14:25
hola, me gustaría saber como hacer cuando el numero es muy grande o muy chico,para que aparezca completo sin la "e".
comentario de eleduarr - 15 de junio de 2014 - 05:08
como lo puedo usar con netbeans?
comentario de victor - 26 de junio de 2014 - 21:25
crear una calculadora en android es muy fácil, yo ya la hice........
comentario de alex - 30 de junio de 2014 - 15:44
tengo un problema, no pude instalar la api 8 de android asi que me puse a provar con la 14, que cambios en el codigo se tiene que hacer? porque cuando ejecuto la aplicacion y presiono cualquiera de los botones dice "la aplicacion se a detenido"
comentario de Adrian - 18 de septiembre de 2014 - 23:43
Hola soy nuevo en esto y me da los siguientes errores:
R.layout R.id.op_a R.id.op_b R.id.resultado.
sdktoolsantbuild.xml:629: Reference project.library.manifest.file.path not found.
BUILD FAILED (total time: 0 seconds)
Que puedo hacer, me poder enviar mas ejemplos.
Gracias
comentario de luis - 16 de octubre de 2014 - 00:31
me marca error en :
android:text="Operando A:"/>
<EditText
comentario de raul - 11 de noviembre de 2014 - 21:21

deja tu comentario:

Enviar