Pregunta

En primer lugar, no estoy seguro de si estoy haciendo esto de la mejor manera en términos de diseño, pero soy un poco nuevo en Android y muy nuevo en Xamarin.Forms.Mi configuración es una serie de ContentPageHay en un PCL de Xamarin.Forms que tratan con información de un servicio REST.Este servicio, al iniciar sesión, otorga un WorkToken que la aplicación conserva para realizar más operaciones.Estoy guardando esto en un ISessionManager.

Mi problema es un problema de flujo de trabajo.tengo un LoginPage que quiero presentarle al usuario si su sesión finalizó/falló/lo que sea;Básicamente, si no han iniciado sesión e intentan hacer algo, quiero colocar esta página en la pila y obligarlos a intentar iniciar sesión y, si proporcionan credenciales válidas, dejarles continuar donde lo dejaron.Todo esto ocurre, en su mayor parte, en PCL, pero he creado una implementación de Android del ISessionManager que se consulta en cada ContentPageestá anulado OnAppearing método.Cada página llama ISessionManager's CheckLogin que hará precisamente eso, y si no han iniciado sesión, creará una Intent y comenzar el LoginActivity a través de eso. LoginActivity esencialmente simplemente envuelve el PCL LoginPage.

El problema con el que me estoy encontrando es que, al hacerlo de esta manera, el LoginActivity se ejecuta de forma asincrónica encima de cualquier página que lo llame.Sin embargo, esta página de llamada está en un estado roto porque aún no se ha inicializado correctamente a través del servicio REST.Imagino que hay dos posibles soluciones.O ejecute el Intent sincrónicamente (lo cual no creo que sea posible) o repensar mi diseño.Aquí esta la Intent configuración:

var intent = new Intent(_context, typeof(LoginActivity));
intent.AddFlags(ActivityFlags.NewTask);
_context.StartActivity(intent);

Revisé varios foros de Xamarin en busca de publicaciones relacionadas con esto, pero no encontré mucho más allá de los flujos de trabajo de navegación básicos en Xamarin.Forms.

Editar:Encontré algo análogo a lo que estoy tratando de hacer aquí: Cómo pasar variables de una nueva intención a la clase que la creó en Android, pero dentro del contexto de Xamarin.Forms.El startActivityForResult resolvería mi problema si existiera en Forms.Context, pero no parece haber un equivalente.

¿Fue útil?

Solución

¿Por qué estás creando una LoginActivity?¿Es porque necesitas usar algo nativo de Android?

Lo primero que pensé es que después de verificar el estado del token en OnAppearing, usted puede decidir presionar o no el modal para la página de inicio de sesión, después de que el usuario inicie sesión y se guarde el token, puede abrir el modal y mostrará la página anterior en la que se encontraba el usuario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top