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

  • Detectar algoritmo de giro de 360 ​​grados
  • ¿Puedo crear Bitmaps con el Android NDK en C ++ y pasarlos a Java muy rápido?
  • Establecer la imagen de fondo de un SurfaceView
  • Cómo girar un modelo 3D en múltiples ejes con la orientación del teléfono
  • ¿Cómo manejar múltiples oyentes de interacción de fragmentos en una actividad correctamente?
  • Convertir valores de mapa en matriz de cadenas
  • Android onServiceConnected () se llama en un hilo separado?
  • La fusión de clips mp4 con mp4parser hace que el audio detrás del video
  • No se puede agregar un nuevo objeto a RealmList debido a la referencia de objeto null
  • Facebook android sdk sharedialog devolución de llamada siempre es un éxito
  • Cómo configurar la versión de origen de la biblioteca Java en el proyecto de Android Studio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.