Android Xamarin,当在第二个活动中调用finish()时,应用程序结束

Android Xamarin,当在第二个活动中调用finish()时,应用程序结束,android,android-activity,xamarin,xamarin.android,Android,Android Activity,Xamarin,Xamarin.android,在MainActivity中:我正在启动一个新的活动,以便结果返回一个图像//此处没有任何错误 Action2.Click += delegate { Intent intent = new Intent(this , typeof(Camera)); StartActivityForResult(intent, 12121); }; protected override void OnActivityResult(int requ

在MainActivity中:我正在启动一个新的活动,以便结果返回一个图像//此处没有任何错误

Action2.Click += delegate {
            Intent intent = new Intent(this , typeof(Camera));
            StartActivityForResult(intent, 12121);
        };
protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
        {
            if (requestCode == 12121 && resultCode == Result.Ok )
            {
                var bytearray = data.GetByteArrayExtra("Image");
                Bitmap image = BitmapFactory.DecodeByteArray(bytearray, 0, bytearray.Length);
                _Image.SetImageBitmap(image);
            }
在第二个Activity://中,此Activity应获取图像并将其返回到MainActivity,但当调用finish()时,应用程序关闭/结束

[Activity(Label = "Camera")]
    public class Camera : Activity
    {
        TextureView mTextureView;
        Camera2Simplified Cam;
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.Camera);
            TextView Cameralog = FindViewById<TextView>(Resource.Id.CameraLog);
            mTextureView = FindViewById<TextureView>(Resource.Id.textureView);
            Button Capture = FindViewById<Button>(Resource.Id.Capture);
            Cam = new Camera2Simplified(this, mTextureView);
            Capture.Click += delegate {
                if (Cam.Capture())
                {
                    var buffer = Cam.mImage.GetPlanes()[0].Buffer;
                    byte[] bytes = new byte[buffer.Capacity()];
                    buffer.Get(bytes);
                    Intent intent = new Intent(this,typeof(MainActivity));
                    intent.PutExtra("Image", bytes);
                    SetResult(Result.Ok,intent);
                    Finish();
                }
            };
        }   
        protected override void OnResume()
        {
            base.OnResume();
            Cam.OnResume();
        }
        protected override void OnPause()
        {
            base.OnPause();
            Cam.OnPause();
        }
    }
}
[活动(Label=“摄像头”)]
公共类摄像机:活动
{
TextureView mTextureView;
摄像机2简化凸轮;
创建时受保护的覆盖无效(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.Camera);
TextView Cameralog=findviewbyd(Resource.Id.Cameralog);
mTextureView=findviewbyd(Resource.Id.textureView);
按钮捕获=findviewbyd(Resource.Id.Capture);
Cam=新摄像机2简化(此为mTextureView);
捕获。单击+=委派{
if(Cam.Capture())
{
var buffer=Cam.mImage.GetPlanes()[0].buffer;
字节[]字节=新字节[buffer.Capacity()];
buffer.Get(字节);
意向意向=新意向(此,类型为(MainActivity));
intent.PutExtra(“图像”,字节);
SetResult(Result.Ok,intent);
完成();
}
};
}   
受保护的覆盖void OnResume()
{
base.OnResume();
Cam.OnResume();
}
受保护的覆盖void OnPause()
{
base.OnPause();
Cam.OnPause();
}
}
}
在“Camera2Simplified”类中,应用程序使用Camera2 API连接到硬件并显示传递纹理的预览,按钮捕获一个不为空的图像,了解应用程序崩溃/结束/结束时关闭的原因();叫什么名字?是不是少了一面旗子什么的

注意:当我注释掉OnResume()OnPause()时;这个应用程序没有 连接到硬件,没有进行预览,在本例中,我尝试设置reusult() 使用Results.Cancelled和Results.OK,应用程序运行正常>>返回到 活动正常


因此,首先,如果您想在调用新意图时清理该活动,我建议在调用活动意图上使用活动标志,而不是使用finish,nohistory可能是最好的


其次,不清楚到底是什么原因导致了您的错误,因为我们不知道意图加载的活动在做什么,因为我们知道您可能正在做一些事情,导致应用程序在意图加载的活动中关闭,但我们不知道。尝试向意图中添加标志,看看这是否有帮助,可能是NewTask或其他什么,看看是否有任何变化。如果你想要更多的信息,请提供更多的代码,当涉及到Xamarin时,不要害怕分享大量的代码,在某些技术中,这太过分了,与Xamarin相比,通常只有更多的代码可以查看。

你应该提供一些代码和错误消息。就我所见,我认为你调用了finish();在您开始第二个活动后的第一个活动中@Nemus没有错误消息,代码运行正常,但由于我用第二个活动覆盖了OnResum,因此调用finish()将结束整个应用程序,而不是结束第二个活动。@JaswanthManigundan,根本没有,它就在SetResults之后,在第二个活动中,当我对Resume和OnPause进行注释时,活动开关normally@JohnJoeXamarin使用Finish,每个命令都以大写开头,不同于android studioAm午餐硬件连接(camera),并在第二个活动中使用camera Api 2,当图像准备就绪时,我尝试将其传递回MainActivity,在这里使用Finish()后关闭应用程序我试过旗帜不起作用,但现在我正在阅读更多关于旗帜的内容,希望它能解决这个奇怪的问题