¿Por qué mi editText no presenta la salida correcta en android?
Soy un principiante en la programación android y estoy tratando de escribir una calculadora simple con 3 campos de editText. 2 de ellos se utilizan como entradas y el tercero como el resultado de salida. Cuando hago clic en el botón "+" espero que la salida de la suma de los 2 números. Pero consigo un número extraño en lugar de por ejemplo 2 + 3 = 2.131230724E9 Traté de resolver en sobre la red pero no podría encontrar ese problema específico … .gracias …
final double tf1 = Double.parseDouble(String.valueOf(R.id.editText1)); final double tf2 = Double.parseDouble(String.valueOf(R.id.editText2)); Button btplus = (Button)findViewById(R.id.button1); btplus.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { double tf3; tf3 = tf1 + tf2; EditText result = (EditText)findViewById(R.id.editText3); result.setText(String.valueOf(tf3)); } });
- ¿Dónde hay una lista de intentos disponibles en Android?
- ¿Puede una clase extender dos clases?
- Cómo configurar / obtener datos de perfil con XMPP usando Smack
- excepción java.lang.NoClassDefFoundError en algunos dispositivos
- Aplicación de chat para Android mediante un servidor XMPP y Google Cloud Messaging (o la nueva mensajería de Cloud de Firebase) para notificaciones por push
- Cliente de Java java puro
- ¿Cómo puedo obtener el patrón predeterminado de formato de fecha y hora?
- Prompt Android App User para actualizar la aplicación si la versión actual <> versión del mercado
- Aplicación de Android que utiliza Socket para enviar y recibir mensajes:
- Agregar elementos a un conjunto <String> en el orden correcto Java
- Android: valor predeterminado en editText
- Vista previa de la web
- Cargar archivos de android (java) a un servidor mediante PHP
R.id.editText1
se refiere al valor int en R.java
.
Es necesario inicializar EditText primero en onCreate
. Si no desea que el modificador final declare EditText como miembro de la clase
final EditText ed1 = (EditText) findViewById(R.id.editText1); final EditText ed2 = (EditText) findViewById(R.id.editText1); final EditText result = (EditText)findViewById(R.id.editText3);
Entonces
Button btplus = (Button)findViewById(R.id.button1); btplus.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { double tf3; double tf1 =Double.parseDouble(ed1.getText().toString()); double tf2 =Double.parseDouble(ed2.getText().toString()); tf3 = tf1 + tf2; result.setText(String.valueOf(tf3)); } });
El problema está en su código:
final double tf1 = Double.parseDouble(String.valueOf(R.id.editText1)); final double tf2 = Double.parseDouble(String.valueOf(R.id.editText2));
No está tomando el valor de EditText, sino la referencia a los objetos. Usted necesita cambiar esto para algo como esto
final double tf1 = Double.parseDouble(((EditText)findViewById(R.id.editText1)).getText().toString()); final double tf2 = Double.parseDouble(((EditText)findViewById(R.id.editText2)).getText().toString());
Además, debe incluir estas líneas en el método OnClick del botón, por lo que tomará los valores actuales cuando haga clic en el botón.
En lugar de esto :
result.setText(String.valueOf(tf3));
Utilizar esta :
result.setText("" + tf3);
Pruebe lo siguiente:
EditText editText1 = (EditText) findViewById(R.id.editText1); EditText editText2 = (EditText) findViewById(R.id.editText2); final double tf1 = Double.parseDouble(editText1.getText().toString()); final double tf2 = Double.parseDouble(editText2.getTExt().toString());
R.id es sólo un entero de referencia y es por eso que obtiene números impares al agregar los dos enteros de id juntos, no el valor real en el cuadro de texto.
final double tf1 = Double.parseDouble(edittext1.getText().toString()); final double tf2 = Double.parseDouble(edittext2.getText().toString()); Button btplus = (Button)findViewById(R.id.button1); btplus.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { double tf3 = 0; tf3 = tf1 + tf2; EditText result = (EditText)findViewById(R.id.editText3); result.setText(String.valueOf(tf3)); } });
- Utilización de elementos desplegables en lugar de texto para los botones de AlertDialog
- Android: cómo mostrar el widget de otras aplicaciones en mi actividad