Xamarin issue with navigating - black sceen

I've got a problem with dark screen after opening minimized app (Android).

It happens in the following scenario:

I tap on a notification, the InfoPage opens. I press back button and it navigates to the main page. I minimize the app, and open it again. After opening again, the screen is black.

Below I present the part of code for MainActivity and InfoPage.

In the MainActivity class, there is a code for opening InfoPage from notification. In the InfoPage class, there is a code for back button.

public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
    Bundle bundle;

    protected override void OnCreate(Bundle bundle)
    {
        ...
    }

    protected override void OnNewIntent(Intent intent)
    {
        base.OnNewIntent(intent);
        Intent = intent;
        DisplayPage();
    }

    public void DisplayPage()
    {
        global::Xamarin.Forms.Forms.Init(this, bundle);
        Xamarin.Forms.Application app = new App();
        app.MainPage.Navigation.PushAsync(new InfoPage());
        LoadApplication(app);

    }
}


public class InfoPage : BasePage
{
    public InfoPage()
    {
        ...
    }

    private void onClickBackButton(object sender, EventArgs e)
    {
        Navigation.PopAsync();
    }

    protected override bool OnBackButtonPressed()
    {
        Navigation.PopAsync();
        return true;
    }
}

1 answer

  • answered 2018-11-10 21:52 SushiHangover

    I am going to assuming that your Activity is not defined as a "singleTop"

    LaunchMode = LaunchMode.SingleTop
    

    And thus you are trying to reinitialize the Form's application when OnNewIntent is called.

    1) Set your Activity to be a singleTop:

    [Activity(Label = "FormsXXXX", Icon = "@mipmap/icon", Theme = "@style/MainTheme", LaunchMode = LaunchMode.SingleTop, MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
       ...
    }
    

    2) Change your DisplayPage to only include the navigation PushAsync:

    public void DisplayPage()
    {
        Xamarin.Forms.Application.Current.MainPage.Navigation.PushAsync(new InfoPage());
    }