Leer datos de un Dialog Personalizado generados en un Fragment

publicado por: Anonymous

Al darle click al botón “Add Client” que se ve en la 1ra foto me genera un dialog (de un layout) donde ingresaré datos.

introducir la descripción de la imagen aquí

Estoy haciendo las pruebas para capturar esos datos con un Toast pero me lo retorna como nulo: “Agregado clientenull” (estoy probando solo con el campo Apellidos, aún no hago validaciones).

introducir la descripción de la imagen aquí

Debuggeando me tope que me lanza este error:

“SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length”

Encontré la posible solución que era agregando esta propiedad al EditText: android:inputType=”textNoSuggestions”

Sin embargo me sigue botando el mismo error.

Este es mi porción de código.

public class Clientes extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_clientes,container,false);
    Button btnAddClient = (Button)view.findViewById(R.id.btnAddClient);

    EditText txtDNI = (EditText)view.findViewById(R.id.txtDNI);
    EditText txtRUC = (EditText)view.findViewById(R.id.txtRUC);
    final EditText txtApellidos = (EditText)view.findViewById(R.id.txtApellidos);
    EditText txtNombres = (EditText)view.findViewById(R.id.txtNombres);
    EditText txtDireccion = (EditText)view.findViewById(R.id.txtDireccion);

    btnAddClient.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
            LayoutInflater inflater = getActivity().getLayoutInflater();
            builder.setTitle("Agregar Cliente");
            builder.setView(R.layout.dialog_clientes);
            builder.setPositiveButton("Agregar", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(getActivity(), "Agregado cliente" + txtApellidos, Toast.LENGTH_SHORT).show();
                }
            });
            builder.show();
            builder.create();
        }
    });
    return view;
}
}

solución

El mensaje
que indicas es porque no obtienes correctamente el valor dentro del EditText.

“Agregado clientenull”

Para obtener el valor especificado dentro del EditText, se realiza mediante el método getText():

txtApellidos.getText().toString()

debe ser de esta forma:

 Toast.makeText(getActivity(), "Agregado cliente: " + txtApellidos.getText().toString(), Toast.LENGTH_SHORT).show();

En el caso tuyo mencionas que al obtener la referencia del EditText marca nullpointerException, te sugiero realizar un pequeño cambio. En lugar de usar directamente setView(), se obtiene la vista en la cual se obtendrían las referencias de los elementos mediante findViewById():

...
...    
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    LayoutInflater inflater = getActivity().getLayoutInflater();
    builder.setTitle("Agregar Cliente");

    //obtiene la vista en la cual se buscaran los elementos.
    View dialogView = inflater.inflate(R.layout.dialog_clientes, null);
    //builder.setView(R.layout.dialog_clientes);
    builder.setView(dialogView);

    final EditText txtApellidos = (EditText) dialogView.findViewById(R.id.txtApellidos);

    builder.setPositiveButton("Agregar", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(getActivity(), "Agregado cliente" + txtApellidos.getText().toString(), Toast.LENGTH_SHORT).show();
                    }
                });
...
...
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *