启动时Xamarin Android.FormsAppCompatActivity NullReferenceException

时间:2022-03-07 16:54:43

I stripped down my application as much as possible to find this problem. Still it appears:

我尽可能地删除了我的应用程序以找到这个问题。它仍然出现:

11-12 15:56:27.908 I/MonoDroid(17629): System.NullReferenceException: Object reference not set to an instance of an object.
11-12 15:56:27.908 I/MonoDroid(17629):   at Xamarin.Forms.Platform.Android.AppCompat.Platform.LayoutRootPage (Xamarin.Forms.Page page, System.Int32 width, System.Int32 height) [0x0005d] in C:\BuildAgent2\work\aad494dc9bc9783\Xamarin.Forms.Platform.Android\AppCompat\Platform.cs:279 
11-12 15:56:27.908 I/MonoDroid(17629):   at Xamarin.Forms.Platform.Android.AppCompat.Platform.Xamarin.Forms.Platform.Android.IPlatformLayout.OnLayout (System.Boolean changed, System.Int32 l, System.Int32 t, System.Int32 r, System.Int32 b) [0x00003] in C:\BuildAgent2\work\aad494dc9bc9783\Xamarin.Forms.Platform.Android\AppCompat\Platform.cs:196 
11-12 15:56:27.908 I/MonoDroid(17629):   at Xamarin.Forms.Platform.Android.PlatformRenderer.OnLayout (System.Boolean changed, System.Int32 l, System.Int32 t, System.Int32 r, System.Int32 b) [0x0000e] in C:\BuildAgent2\work\aad494dc9bc9783\Xamarin.Forms.Platform.Android\PlatformRenderer.cs:73 
11-12 15:56:27.908 I/MonoDroid(17629):   at Android.Views.ViewGroup.n_OnLayout_ZIIII (System.IntPtr jnienv, System.IntPtr native__this, System.Boolean changed, System.Int32 l, System.Int32 t, System.Int32 r, System.Int32 b) [0x00009] in /Users/builder/data/lanes/3511/ce955cc0/source/monodroid/src/Mono.Android/platforms/android-23/src/generated/Android.Views.ViewGroup.cs:3427 
11-12 15:56:27.908 I/MonoDroid(17629):   at (wrapper dynamic-method) System.Object:784a0fc1-dc7c-42ec-831f-0701fd382e8e (intptr,intptr,bool,int,int,int,int)
11-12 15:56:27.925 W/art     (17629): JNI RegisterNativeMethods: attempt to register 0 native methods for android.runtime.JavaProxyThrowable

This is my Android Activity

这是我的Android活动

[Activity(Label = "Bol",Icon = "@drawable/icon",MainLauncher = true,Theme = "@style/MyTheme.Splash", NoHistory = true)]
public class MainActivity : FormsAppCompatActivity

For the splashscreen, I have the following values/styles.xml

对于splashscreen,我有以下值/ styles.xml

<resources>
 <style name="MyTheme.Splash" parent ="Theme.AppCompat.Light.NoActionBar">
  <item name="android:windowBackground">@drawable/splash_screen</item>
  <item name="android:windowNoTitle">true</item>
  <item name="android:windowActionBar">false</item>
  <item name="android:windowFullscreen">true</item>
  <item name="android:actionBarSize">0dp</item>
 </style>
</resources>

And the drawable/splash_screen.xml

和drawable / splash_screen.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<color android:color="#000000"/>
</item>
<item>
<bitmap
    android:src="@drawable/icon"
    android:tileMode="disabled"
    android:gravity="center"/>
</item>
</layer-list>

And the Xamarin (Prism) Application

和Xamarin(Prism)应用程序

public class App : PrismApplication
{
    public App(IPlatformInitializer initializer = null) : base(initializer) { }

    protected override void OnInitialized()
    {
        Logger = Container.Resolve(typeof(ILogger), null, new CompositeResolverOverride()) as ILoggerFacade;
        var navigationPage = "NavigationPage/MainMenu";
        NavigationService.NavigateAsync(navigationPage);
    }
}

The MainMenu is just an empty ContentPage.

MainMenu只是一个空的ContentPage。

I don't see any hint about what leeds to the NullReference during Xamarin.Forms.Platform.Android.AppCompat.Platform.LayoutRootPage

在Xamarin.Forms.Platform.Android.AppCompat.Platform.LayoutRootPage期间,我没有看到任何关于利用NullReference的提示的提示

1 个解决方案

#1


0  

Mark OnInitialized as async and await NavigationService.NavigateAsync(navigationPage);. That should solve your problem.

将OnInitialized标记为异步并等待NavigationService.NavigateAsync(navigationPage);.这应该可以解决你的问题。

#1


0  

Mark OnInitialized as async and await NavigationService.NavigateAsync(navigationPage);. That should solve your problem.

将OnInitialized标记为异步并等待NavigationService.NavigateAsync(navigationPage);.这应该可以解决你的问题。