AlertDialog con dos Ediciones – al pulsar Botón ok -> iniciar nueva Alerta
Es una pregunta muy estúpida, pero empecé el programa con java para android hace unos días y no sé qué hacer ….
Así que quiero un AlertDialog cuando u pulse un botón. Este AlertDialog necesita 2 ediciones. Cuando u presione OK tiene que calcutale algo y mostrar la solución en un nuevo AlertDialog.
- Carga de datos desde la aplicación de Android al programa de escritorio
- Ejecutar python script dentro de java en android
- ANDROID: ViewPager con diferentes fragmentos en el método instantiateItem
- No se puede resolver el método getSupportFragmentManager () en android studio
- Cómo dibujar LibGDX Sprite de Constructor en blanco
Eso es lo que tengo:
public void btn_own(View view) { int a, b, c; final String s; AlertDialog.Builder alert = new AlertDialog.Builder(this); alert.setTitle("Enter range"); final EditText inputa = new EditText(this); final EditText inputb = new EditText(this); alert.setView(inputa); alert.setView(inputb); alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { int aa, bb, cc , e ; aa = new Integer(String.valueOf(inputa)); bb = new Integer(String.valueOf(inputb)); cc = bb - aa; Random rand = new Random(); int d = rand.nextInt(cc); e = d + bb; Integer out = new Integer(e); s = out.toString(); new AlertDialog.Builder(this) .setMessage(s) .show(); } }); }
El último "esto" está mal. Recibo el mensaje
Builder(android.content.Context) in Builder cannot be applied to (android.content.DialogInterface.OnClickListener)
Pero no sé lo que puedo escribir en lugar de "esto"
Otro problema es que el 's' en la línea sobre 'esto' está marcado. Cannot assign a value to final variable 's'
Espero que me puedas ayudar
EDITAR:
Mi nuevo Código:
public void btn_own(View view) { int a, b, c; // a : untere Grenze , b : obere Grenze AlertDialog.Builder alert = new AlertDialog.Builder(this); alert.setTitle("Enter range"); final EditText inputa = new EditText(this); final EditText inputb = new EditText(this); alert.setView(inputa); alert.setView(inputb); alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { int aa = 0; int bb = 0; int cc = 0; int e = 0; try { aa = Integer.parseInt(inputa.getText().toString()); } catch (NumberFormatException f) { System.out.println("not a number: " + inputa.getText().toString()); f.printStackTrace(); } try { bb = Integer.parseInt(inputb.getText().toString()); } catch (NumberFormatException g) { System.out.println("not a number: " + inputb.getText().toString()); g.printStackTrace(); } cc = bb - aa; Random rand = new Random(); int d = rand.nextInt(cc); e = d + bb; Integer out = new Integer(e); s = out.toString(); new AlertDialog.Builder(Decider.this) .setMessage(s) .show(); } }); alert.show(); }
Error: Ok ahora funciona como: puedo introducir un número, entonces me sale otro número al azar. Pero ¿cómo puedo dejar que funcione como: i entrar en un rango, y tengo un número al azar? ¿Por qué ve sólo una edición?
- Algunos parámetros de función denominados arg0, arg1, etc ... después de compilar una biblioteca JAR
- cómo pasar los parámetros a la urlconnection en java / android?
- UnsatisfiedLinkError: No se pudo cargar X desde el cargador
- ¿Cómo se muestra un diálogo de alerta sólo en la primera ejecución de mi aplicación?
- Android establece el atributo autoLink mediante programación
- Compruebe si el diálogo puede descartarse con seguridad
- Cómo encadenar los métodos groupBy () de RxJava como groupBy (). GroupBy ()
- ¿Cómo GCM localiza un teléfono de usuario?
Trate de implementar DialogInterface.OnClickListener en su actividad (es mejor porque no crear nuevo objeto por lo que se utilizan menos recursos y se ahorra batería)
public class MyActivity extends Activity implements { public void onClick(DialogInterface dialog, int whichButton) { int aa, bb, cc, e; aa = new Integer(String.valueOf(inputa)); bb = new Integer(String.valueOf(inputb)); cc = bb - aa; Random rand = new Random(); int d = rand.nextInt(cc); e = d + bb; Integer out = new Integer(e); s = out.toString(); new AlertDialog.Builder(this).setMessage(s).show(); } }
A continuación, establezca su botón con esto:
alert.setPositiveButton("Ok", this);
Utilice view.getContext()
lugar de this
que se refieren al contexto OnClickListener para crear AlertDialog como:
AlertDialog.Builder alert = new AlertDialog.Builder(view.getContext());
En segundo lugar, si desea cambiar el valor de s
en Alerta haga clic en el botón, a continuación, eliminar final
de la s
y declararlo fuera método btn_own
.
Usted no debe anidar AlertDialogs dentro de otros AlertDialogs.
Así que esto:
new AlertDialog.Builder(this) .setMessage(s) .show();
Utilizará el contexto incorrecto, pero tendrá que pasar una actividad como contexto
Intente usar YourActivity.this
o view.getContext()
como param en su lugar
Actualización: acerca de su NumberFormatException
debe probar esto:
try { aa = Integer.parseInt(inputa.getText().toString()); } catch (NumberFormatException e) { System.out.println("not a number: " + inputa.getText().toString()); e.printStackTrace(); }
Pero usted necesita estar seguro de que su editText sólo permite números!
Para convertir un int de String use:
aa = Integer.parseInt(inputa.getText()));
Rodéelo con try / catch para evitar que el usuario ingrese mal y su excepción
- Ejemplo de aleación Android aplicación con una webview que carga html local y javascript?
- Simple no API Android JUnit prueba en Eclipse con android-maven-plugin?