通过按钮从另一个类调用方法会获得未处理的异常

时间:2016-04-22 08:20:08

标签: c# class methods xamarin

所以我有两个课程:HomeActivity.csMainActivity.cs

HomeAcitivity.cs下,我有以下代码:

MainActivity main = new MainActivity();

ImageButton btnGallery = FindViewById<ImageButton>(Resource.Id.imageButton1);
btnGallery.Click += main.ButtonOnClickGallery;

if (IsThereAnAppToTakePictures())
{
     CreateDirectoryForPictures();
     ImageButton btnCamera = FindViewById<ImageButton>(Resource.Id.imageButton2);
     btnCamera.Click += main.ButtonOnClickCamera;
}

Button btnSkip = FindViewById<Button>(Resource.Id.btnSkip);
btnSkip.Click += delegate { StartActivity(typeof(NoPhoto)); };

如果单击该按钮,它将重定向到MainActivity.cs中的方法。问题是它提供了Unhandled expception: Java.Lang.NullPointerException

MainActivity.cs中的代码:

public void ButtonOnClickGallery(object sender, EventArgs eventArgs)
{
    var intent = new Intent();
    intent.SetType("image/*");
    intent.SetAction(Intent.ActionGetContent);
    StartActivityForResult(Intent.CreateChooser(intent, "Select Picture"), SELECT_FILE); // unhandled exception
}

public void ButtonOnClickCamera(object sender, EventArgs eventArgs)
{
    Intent intent = new Intent(MediaStore.ActionImageCapture);
    App._file = new File(App._dir, String.Format("myPhoto_{0}.jpg", Guid.NewGuid()));
    intent.PutExtra(MediaStore.ExtraOutput, Android.Net.Uri.FromFile(App._file));
    StartActivityForResult(intent, REQUEST_CAMERA); // unhandled exception
}

它指向的行在StartActivityForResult(),可能是因为它导致了另一种方法。

我期望点击按钮后,它会执行该方法,然后将图像(方法的目的)显示到Main.axmlMainActivity.cs)。

为什么会这样?什么是从一个类调用另一个类的方法的最佳方法(无需再次返回到启动调用的第一个类)?

如果我的问题太模糊,请告诉我。希望能得到解决方案。

1 个答案:

答案 0 :(得分:0)

由于您在代码中手动创建MainActivity,因此发生错误。您应该使用StartActivity打开MainActivity

StartActivity(typeof(MainActivity));

如果您希望MainActivity自动打开相机或图片选择器,您可以传递MainActivity可以用来决定做什么的其他数据。

   var main = new Intent(this, typeof(MainActivity));
   main.PutExtra("OpenCamera", true);
   StartActivity(main);

MainActivity内部OnCreate,您可以获得如下数据:

bool openCamere = Intent.GetBooleanExtra("OpenCamera", false);