Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android: no se puede obtener valor de EditText dentro de Custom Dialog

No he tenido éxito al obtener la entrada de mi objeto EditText dentro de mi cuadro de diálogo personalizado.

public class SetCityDialog extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LayoutInflater factory = LayoutInflater.from(MainActivity.this); final View view = factory.inflate(R.layout.city_dialog, null); AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); // Get the layout inflater LayoutInflater inflater = getActivity().getLayoutInflater(); builder.setView(inflater.inflate(R.layout.city_dialog, null)) // Add action buttons .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { //This is the input I can't get text from EditText inputTemp = (EditText) view.findViewById(R.id.search_input_text); //query is of the String type query = inputTemp.getText().toString(); newQuery(); getJSON newData = new getJSON(); newData.execute("Test"); } }) .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { SetCityDialog.this.getDialog().cancel(); } }); return builder.create(); } } 

No obtengo ninguna excepción, pero la consulta variable se establece en una cadena vacía. Cualquier ayuda sería fantástica.

  • Android cambiar dinámicamente el estilo en tiempo de ejecución
  • Emulador que no ejecuta la aplicación OpenGL cuyos mensajes "Desafortunadamente, OpenGL ES 2.0 Basic se ha detenido"
  • Construyendo un proyecto de Android Studio en Jenkins? Android.compileSdkVersion está ausente
  • Cómo hacer una cámara personalizada con Live Stickers
  • ¿Cómo puedo asegurar un teclado numérico decimal en Android?
  • Mostrar icono en barra de herramientas / barra de herramientas con AppCompat-v7 21
  • Java - Línea aleatoria leer
  • ¿Qué stretchMode utilizar en GridView en android
  • Codificación de Android con switch (String)
  • El widget no aparece en la lista de widgets
  • Uso del cursor en android
  • ¿Referencia del CSS a la fuente de Emoji del teléfono?
  • 4 Solutions collect form web for “Android: no se puede obtener valor de EditText dentro de Custom Dialog”

    Yo estaba tratando de hacer lo mismo y obtener el mismo error. No sé porqué. Ya utilizo AlertDialog.Builder en el pasado y no tengo problemas. Pero en su caso, cambie este código:

     public void onClick(DialogInterface dialog, int id) { //This is the input I can't get text from EditText inputTemp = (EditText) view.findViewById(R.id.search_input_text); //query is of the String type query = inputTemp.getText().toString(); newQuery(); getJSON newData = new getJSON(); newData.execute("Test"); } 

    Por este:

     public void onClick(DialogInterface dialog, int id) { Dialog f = (Dialog) dialog; //This is the input I can't get text from EditText inputTemp = (EditText) f.findViewById(R.id.search_input_text); query = inputTemp.getText().toString(); ... } 

    Esta solución funciona para mí y parece ser lo mismo para usted. Encontrado en stackoverflow

    Use esto en su lugar:

     View myLayout = nflater.inflate(R.layout.city_dialog, null); EditText myEditText = (EditText) myLayout.findViewById(R.id.myEditText); String valueOfEditText = myEditText.getText().toString(); 

    No hace falta hacer mucha codificación. Solo cambia

      builder.setView(inflater.inflate(R.layout.city_dialog, null)) 

    a

      builder.setView(view) 

    Y acceder al texto de EditText utilizando ** view.findView …..

      EditText inputTemp = (EditText) view.findViewById(R.id.search_input_text); String xyz = inputTemp.getText().toString(); 
     This is worked for me: // if button is clicked, close the custom dialog dialogButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { try { Dialog inDialog = (Dialog) dialog; EditText emailAddress = (EditText) inDialog.findViewById(R.id.emailAddress); email = emailAddress.getText().toString(); if(email.length() == 0) { objPublicDelegate.showToast("Please fill Email Address."); }else{ objLoadingDialog.show("Please wait..."); // Call a network thread Async task mNetworkMaster.runForgetAsync(email); } } catch (Exception e) { e.printStackTrace(); } } }); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.