本文介绍了使用意图过滤器启动时Xamarin.Android mvvmcross应用程序崩溃的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
通过链接打开android应用程序时,android应用程序崩溃,并显示NullReferenceExcetpion
.
When opening up the android application via a link, the android application crashes, with a NullReferenceExcetpion
.
NRE
在base.OnCreate(bundle)
方法中发生.基本类型为MvxFragmentCompatActivity
.我也使用标准的MvxActivity
进行了尝试.
The NRE
happens in the base.OnCreate(bundle)
method. The base is of type MvxFragmentCompatActivity
. I have also tried this with a standard MvxActivity
.
我看过以下问题(但无济于事)
I have had a look at the following questions (but to no avail)
- ViewModel null when Activity started from IntentFilter
- Open MvvmCross app via link with data
活动
[Activity(...)]
[IntentFilter(new[] { Intent.ActionView }, DataScheme = "https", DataHost = "my.link.com", DataPathPrefix = "/some/path/", Categories = new[] { Intent.CategoryDefault, Intent.CategoryBrowsable })]
public class MyActivity : MvxFragmentCompatActivity<MyViewModel>
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
//Other code here (never reached when triggered by IntentFilter)
}
}
堆栈跟踪
Caused by: md52ce486a14f4bcd95899665e9d932190b.JavaProxyThrowable: System.NullReferenceException: Object reference not set to an instance of an object
04-15 12:37:45.361 E/AndroidRuntime(26519): at MvvmCross.Platform.Mvx.Resolve[TService] () <0x9dcd9978 + 0x00038> in <filename unknown>:0
04-15 12:37:45.361 E/AndroidRuntime(26519): at MvvmCross.Binding.Droid.BindingContext.MvxAndroidBindingContextHelpers.Current[T] () <0x9dcd9930 + 0x0001b> in <filename unknown>:0
04-15 12:37:45.361 E/AndroidRuntime(26519): at MvvmCross.Binding.Droid.BindingContext.MvxAndroidBindingContextHelpers.Current () <0x9dcd9910 + 0x0000f> in <filename unknown>:0
04-15 12:37:45.361 E/AndroidRuntime(26519): at MvvmCross.Binding.Droid.Views.MvxLayoutInflater.Inflate (Int32 resource, Android.Views.ViewGroup root, Boolean attachToRoot) <0x9dcd7800 + 0x00033> in <filename unknown>:0
04-15 12:37:45.361 E/AndroidRuntime(26519): at Android.Views.LayoutInflater.n_Inflate_ILandroid_view_ViewGroup_Z (IntPtr jnienv, IntPtr native__this, Int32 resource, IntPtr native_root, Boolean attachToRoot) <0x9dcd7780 + 0x00063> in <filename unknown>:0
04-15 12:37:45.361 E/AndroidRuntime(26519): at (wrapper dynamic-method) System.Object:a2381224-dbcc-42b0-9aea-a687067e2004 (intptr,intptr,int,intptr,bool)
04-15 12:37:45.361 E/AndroidRuntime(26519): --- End of stack trace from previous location where exception was thrown ---
04-15 12:37:45.361 E/AndroidRuntime(26519): at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () <0x9dcdc6b8 + 0x0002b> in <filename unknown>:0
04-15 12:37:45.361 E/AndroidRuntime(26519): at Android.Runtime.JNIEnv.CallNonvirtualVoidMethod (IntPtr jobject, IntPtr jclass, IntPtr jmethod, Android.Runtime.JValue* parms) <0x9dd046f0 + 0x000b3> in <filename unknown>:0
04-15 12:37:45.361 E/AndroidRuntime(26519): at Android.Support.V4.App.FragmentActivity.OnCreate (Android.OS.Bundle savedInstanceState) <0x9dcd6608 + 0x0014f> in <filename unknown>:0
04-15 12:37:45.361 E/AndroidRuntime(26519): at MvvmCross.Droid.Support.V7.AppCompat.MvxEventSourceAppCompatActivity.OnCreate (Android.OS.Bundle bundle) <0x9dcd5850 + 0x00037> in <filename unknown>:0
04-15 12:37:45.361 E/AndroidRuntime(26519): at MyMobileApp.Droid.Activities.MyActivity.OnCreate (Android.OS.Bundle bundle) <0x9dcd5400 + 0x0001b> in <filename unknown>:0
04-15 12:37:45.361 E/AndroidRuntime(26519): at Android.Support.V4.App.FragmentActivity.n_OnCreate_Landroid_os_Bundle_ (IntPtr jnienv, IntPtr native__this, IntPtr native_savedInstanceState) <0x9dcd5380 + 0x00057> in <filename unknown>:0
04-15 12:37:45.361 E/AndroidRuntime(26519): at (wrapper dynamic-method) System.Object:e50a07b6-601f-425e-bac2-dd61e65b301f (intptr,intptr,intptr)
04-15 12:37:45.361 E/AndroidRuntime(26519): at md5af86c8db51f1d1641c99147539ead00a.MyActivity.n_onCreate(Native Method)
04-15 12:37:45.361 E/AndroidRuntime(26519): at md5af86c8db51f1d1641c99147539ead00a.MyActivity.onCreate(MyActivity.java:43)
04-15 12:37:45.361 E/AndroidRuntime(26519): at android.app.Activity.performCreate(Activity.java:5990)
04-15 12:37:45.361 E/AndroidRuntime(26519): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
04-15 12:37:45.361 E/AndroidRuntime(26519): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
04-15 12:37:45.361 E/AndroidRuntime(26519): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
04-15 12:37:45.361 E/AndroidRuntime(26519): at android.app.ActivityThread.access$800(ActivityThread.java:151)
04-15 12:37:45.361 E/AndroidRuntime(26519): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
04-15 12:37:45.361 E/AndroidRuntime(26519): at android.os.Handler.dispatchMessage(Handler.java:102)
04-15 12:37:45.361 E/AndroidRuntime(26519): at android.os.Looper.loop(Looper.java:135)
04-15 12:37:45.361 E/AndroidRuntime(26519): at android.app.ActivityThread.main(ActivityThread.java:5254)
推荐答案
我认为这与以下内容有关: https://github.com/MvvmCross/MvvmCross/issues/1192
I think this has to do with: https://github.com/MvvmCross/MvvmCross/issues/1192
尝试这样的事情:
protected override void OnCreate(Bundle bundle)
{
var setup = MvxAndroidSetupSingleton.EnsureSingletonAvailable(ApplicationContext);
setup.EnsureInitialized();
base.OnCreate(bundle);
}
这篇关于使用意图过滤器启动时Xamarin.Android mvvmcross应用程序崩溃的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!