es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

“Transmitiendo datos a través de la navegación entre fragmentos en Android Studio”

Soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y la salida en Markdown.

Soy nuevo en Android Studio y aún no entiendo completamente su funcionamiento, pero he estado intentando enviar datos de un fragmento a otro en Android Studio. No he podido encontrar una respuesta clara a este problema. Lo que estoy tratando de hacer es crear una aplicación básica de estacionamiento donde se escanea un código QR y los datos que están en el código QR (nombre del estacionamiento y precio por hora) se enviarán al siguiente fragmento, ya que el fragmento del escáner de código QR abrirá un fragmento de agregar sesión de estacionamiento donde necesitaré los datos del estacionamiento. He estado tratando de usar “Navigation” para hacer esto, pero no puedo encontrar una forma de enviar datos a través de este método. ¿Hay algún método diferente que se adapte mejor a esto (tiene que ir de fragmento a fragmento)? He estado intentando usar el intent pero la navegación no parece tener una opción para enviar un intent junto con él.

Aquí hay parte de mi código como ejemplo. Gracias por su ayuda y comprensión.

codeScanner.setDecodeCallback (nuevo DecodeCallback () {
@Override
public void onDecoded (@NonNull Result result) {
getActivity (). runOnUiThread (nuevo Runnable () {
@Override
public void run () {
if (result.getText ()! = null) {
String [] parkingdata = resultData.toString (). Split (& quot;,& quot;);
Intent intent = new Intent (getActivity (). GetBaseContext (), AddSession.class);
intent.putExtra (& quot;parkingName & quot ;, parkingdata [0]);
intent.putExtra (& quot;parkingPrice & quot ;, parkingdata [1]);
Navigation.findNavController (vista) .navigate (R.id.action_qrSession_to_addSession);
}
}
});
}
});

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para enviar datos de un fragmento a otro en Android Studio, hay algunos métodos disponibles como usar Bundle, ViewModel o Intent. En este caso, se puede usar Intent para pasar los datos de un fragmento a otro.

    El código proporcionado parece estar usando Intent para enviar los datos al siguiente fragmento pero llamando al componente de navegación para abrir el fragmento. En su lugar, se puede usar el método startActivity() para iniciar el siguiente fragmento con el Intent.

    Aquí hay un ejemplo de código actualizado que debería funcionar:

    codeScanner.setDecodeCallback(new DecodeCallback() {
        @Override
        public void onDecoded(@NonNull Result result) {
            getActivity().runOnUiThread(new Runnable(){
                @Override
                public void run(){
                    if(result.getText() != null) {
                        String[] parkingdata = resultData.toString().split(",");
                        Intent intent = new Intent(getActivity(), AddSession.class);
                        intent.putExtra("parkingName", parkingdata[0]);
                        intent.putExtra("parkingPrice", parkingdata[1]);
                        startActivity(intent);
                    }
                }
            });
        }
    });
    

    En el fragmento AddSession, se puede recuperar los datos usando el método getArguments().

    Bundle bundle = getArguments();
    if (bundle != null) {
        String parkingName = bundle.getString("parkingName");
        String parkingPrice = bundle.getString("parkingPrice");
        // Use the data as needed
    }
    

    ¡Espero que esto ayude! Avísame si tienes alguna pregunta o inquietud adicional.

Comments are closed.