codigo calculadora android

13
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 archivores/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"

Upload: ronald-lopez

Post on 22-Jan-2016

3.198 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Codigo Calculadora 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

archivores/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"

Page 2: Codigo Calculadora Android

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"

Page 3: Codigo Calculadora Android

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

Page 4: Codigo Calculadora Android

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

Page 5: Codigo Calculadora Android

}

}

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.

59 comentarios:

Otro otro al correo [email protected]

se les agradeceracomentario de Jaime David - 7 de marzo de 2011 - 16:28

Page 6: Codigo Calculadora Android

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 Rcomentario 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.htmlcomentario 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 [email protected] 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. [email protected] 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 sercomentario 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

Page 7: Codigo Calculadora Android

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.....felicidadescomentario 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

Saludoscomentario 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 errorcomentario 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.. ayudacomentario 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.

Page 8: Codigo Calculadora Android

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 interrumpidocomentario 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 porfavorcomentario de RUlo - 21 de enero de 2012 - 21:22

no suma -.-....todo lo demas..Ok =Dcomentario 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 graciascomentario de Daniel - 18 de febrero de 2012 - 23:39

Genial es como programar en SWINGcomentario 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 [email protected] gracias de antemanocomentario 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

Page 9: Codigo Calculadora Android

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).. Graciascomentario 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 graciascomentario 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 ayudacomentario 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 ayudacomentario 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

Page 10: Codigo Calculadora Android

setContentView(R.layout.main); a mi me toco colocar setContentView(R.layout.activity_calculadora); me

pdorias colaborar con eso? Muchisimas graciascomentario 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)));

Page 11: Codigo Calculadora Android

}

}

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 eclipsecomentario 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 graciascomentario 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

Page 12: Codigo Calculadora Android

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 potenciacomentario 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