简体   繁体   中英

Step from parameter to page (Xamarin App)

I am developing a PCL App In Xamarin ... and I want to pass a variable from one page to another ... the variable is "usersMovil", although in the method constructor MenuPage (UsuariosMovil usuariosMovil) is mapped .... when it leaves Is no longer available and considers it null ....I want to pass from LoginPage ----> MenuPage.... any help for me?

public LoginPage()
{
    InitializeComponent();
    enterButton.Clicked += enterButton_Clicked;
}

private async void enterButton_Clicked(object sender, EventArgs e)
{
    if (string.IsNullOrEmpty(userEntry.Text))
    {
        await DisplayAlert("Error", "Debe Ingresar un Usuario", "Aceptar");
        userEntry.Focus();
        return;
    }

    if (string.IsNullOrEmpty(passwordEntry.Text))
    {
        await DisplayAlert("Error", "Debe Ingresar un Usuario", "Aceptar");
        userEntry.Focus();
        return;
    }

    waitActivityIndicator.IsRunning = true;
    string result;
    try
    {
        enterButton.IsEnabled = false;
        HttpClient client = new HttpClient();
        client.BaseAddress = new Uri("http://200.27.70.5/web_sit2/");
        string url = string.Format("api/UsuariosMovilsAPI/{0}/{1}", userEntry.Text, passwordEntry.Text);

        var response = await client.GetAsync(url);
        result = response.Content.ReadAsStringAsync().Result;

        enterButton.IsEnabled = true;
        waitActivityIndicator.IsRunning = false;
    }
    catch (Exception ex)
    {
        await DisplayAlert("Error", "No hay Conexión...", "Aceptar");
        enterButton.IsEnabled = true;
        waitActivityIndicator.IsRunning = false;
        return;
    }

    waitActivityIndicator.IsRunning = false;

    if (string.IsNullOrEmpty (result) || result == "null")
    {
        await DisplayAlert("Error", "Usuarios y/o Password NO válido", "Aceptar");
        passwordEntry.Text = string.Empty;
        passwordEntry.Focus();
        return;
    }

    var usuariosMovil = JsonConvert.DeserializeObject<UsuariosMovil>(result);
    await Navigation.PushAsync(new MenuPage(usuariosMovil));
}

A WebServices is in charge of bringing the User and Password that was entered into the system, the idea is to pass those variables between pages, but in the event infractionButton_Clicked (object sender, EventArgs e) , the variable usersMovil is taken and takes the value null .

public UsuariosMovil usuariosMovil;
public int UsuarioMovilID;

public MenuPage(UsuariosMovil usuarioMovil)
{
    InitializeComponent();

    UsuarioMovilID = usuarioMovil.UsuarioMovilID;

    titleLabel.Text = string.Format("Bienvenid@ {0} {1}", usuarioMovil.Nombre, usuarioMovil.Apellido);

    infraccionButton.Clicked += infraccionButton_Clicked;
    consultarButton.Clicked += consultarButton_Clicked;
    actualizarButton.Clicked += actualizarButton_Clicked;
}

private async void actualizarButton_Clicked(object sender, EventArgs e)
{
    await Navigation.PushAsync(new ActualizarPage());
}

private async void consultarButton_Clicked(object sender, EventArgs e)
{
    await Navigation.PushAsync(new ConsultarPage());
}

private async void infraccionButton_Clicked(object sender, EventArgs e)
{
    await Navigation.PushAsync(new NewInfraccionPage(usuariosMovil));
}

Found your problem. You forgot your variabele named usuarioMovil in your constructor of your menupage.

Just add following line: this.usuarioMovil = usuarioMovil;

I hope that solves your problem ;)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM