所以我有两个课程:HomeActivity.cs
和MainActivity.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.axml
(MainActivity.cs
)。
为什么会这样?什么是从一个类调用另一个类的方法的最佳方法(无需再次返回到启动调用的第一个类)?
如果我的问题太模糊,请告诉我。希望能得到解决方案。
答案 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);