0

マルチタスクの問題が原因で Android によってアプリケーションが強制終了された直後に、アクティビティの 1 つが表示されます。アプリケーションがアプリケーションを再作成しようとするとクラッシュしますMyActivityMvxDialogActivity

つまり、アプリケーションをバックグラウンドに移動し、コンソール (DDMS) に次のメッセージが表示されるまで、他のアプリケーション間の切り替えを開始する前に、すべてが正常に機能します。

I/ActivityManager( 333): No longer want com.my.app (pid 4444): hidden #22

アプリケーションを再度開くと、そのアクティビティを再作成しようとするため、そのうちの 1 つが次のスタック トレースでクラッシュします。

UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object
at Cirrious.CrossCore.Mvx.Resolve<Cirrious.MvvmCross.Binding.BindingContext.IMvxBindingContextStack`1<Cirrious.MvvmCross.Binding.Droid.BindingContext.IMvxAndroidBindingContext>> () <0x00038>
at Cirrious.MvvmCross.Binding.BindingContext.MvxBindingContextStackRegistration`1<Cirrious.MvvmCross.Binding.Droid.BindingContext.IMvxAndroidBindingContext>.get_Stack () <0x0001f>
at Cirrious.MvvmCross.Binding.BindingContext.MvxBindingContextStackRegistration`1<Cirrious.MvvmCross.Binding.Droid.BindingContext.IMvxAndroidBindingContext>..ctor (Cirrious.MvvmCross.Binding.Droid.BindingContext.IMvxAndroidBindingContext) <0x00017>
at Cirrious.MvvmCross.Binding.Droid.BindingContext.MvxAndroidBindingContext.CommonInflate (int,Android.Views.ViewGroup,Cirrious.MvvmCross.Binding.Droid.Binders.MvxBindingLayoutInflatorFactory) <0x0004b>
at Cirrious.MvvmCross.Binding.Droid.BindingContext.MvxAndroidBindingContext.BindingInflate (int,Android.Views.ViewGroup) <0x0004f>
at Cirrious.MvvmCross.Binding.Droid.BindingContext.MvxBindingContextOwnerExtensions.BindingInflate (Cirrious.MvvmCross.Binding.BindingContext.IMvxBindingContextOwner,int,Android.Views.ViewGroup) <0x000c7>
at Cirrious.MvvmCross.Dialog.Droid.Views.MvxDialogActivity.SetContentView (int) <0x0001f>
at Droid.UI.Impl.MyActivity.OnCreate (Android.OS.Bundle) <0x0008f>

プロジェクト内で MvvmCross をセットアップしようとしたときに行った間違いが原因で発生していると思います。

このクラッシュの他の理由はありますか? このクラッシュを修正するにはどうすればよいか教えてください。

ここに私のSetup.csファイルがあります:

public class Setup : MvxAndroidDialogSetup 
{
    public Setup (Context applicationContext)
        : base (applicationContext)
    {
    }

    protected override IMvxApplication CreateApp ()
    {
        return new MvvmCrossApplication ();
    }
}


public class MvvmCrossApplication : MvxApplication
{
    public override void Initialize ()
    {
        RegisterAppStart<ApplicationViewModel>();
    }
}

Android がアプリを再作成しているときMyActivityに、最初の MvvmCross セットアップが完了する前に新しいインスタンスをインスタンス化しているようです。おそらく、アプリが強制終了されたときに、同じクラスの有効なインスタンスがあったためです。起こっている可能性はありますか?

これは、私のMyActivityクラスが画面に表示するもののスクリーンショットです。

MyActivity カスタム レイアウト

以下を持つ MvxDialogActivity です。

  • アクションバー;
  • カスタム レイアウト (次の ID を持つカスタム ListView を含むandroid:id="@android:id/list"); と
  • ViewModel の更新に応じて更新されるルート要素。
4

1 に答える 1

0

MyActivity.OnCreate呼び出しスタックから、呼び出しているように見えますSetContentView

Android.Dialog ベースのアクティビティは、実装中に呼び出されませSetContentViewOnCreate

これらのダイアログ ビューの例を次に示します。

于 2013-11-06T12:10:57.097 に答える