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.

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?

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

  • ¿Cuándo muere la instancia de Activity?
  • ¿Cómo obtener el idioma del teléfono con libgdx?
  • ¿Puedo anular un método oculto (pero público) y llamar a su método super?
  • ¿Cómo puedo especificar una imagen de marcador de posición?
  • Android Shared Service?
  • Android / RxJava Cómo encadenar las solicitudes de red y volver a intentarlo cuando falla
  • Cómo ejecutar script matlab desde java (para android) usando matlabcontol.jar
  • Patrones de desarrollo de Android
  • FFmpeg - no puede encontrar ExecuteBinaryResponseHandler - Android / Java
  • El método findFirst () del dominio devuelve null
  • Cómo llamar a onCreateOptionsMenu desde el código
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.