C Sharp (Xamarin を使用) を使用して Android アプリケーションを構築しており、FeedActivity.cs という現在のクラスの別のクラスからメソッドを呼び出そうとしていますが、次のような一般的なエラーが発生しています。
"FeedActivity:PostPicture: Exception of type 'Java.Lang.RuntimeException' was thrown."
Xamarin は Android で実行できるように C# を Java にコンパイルするため、Java エラーです。
コードは次のとおりです。
#class from which I want to call the method from the FacebookActivity.cs class
public class FeedActivity : BaseActivity
{
#the method that actually starts the whole process
private void PostPicture(pic picture, bool shareOnFacebook)
{
#posts the picture to my own app, no problem here
#try catch statement, this is where the error comes in
try
{
if (shareOnFacebook) SharePictureOnFacebook(picture);
}
catch (Exception ex)
{
LogManager.Error(this, ex, "FeedActivity:PostPicture: ", ex.Message);
}
}
#method from which I want to call the method from the FacebookActivity.cs class
private void SharePictureOnFacebook(pic picture)
{
FacebookActivity permissionAdder = new FacebookActivity();
#this is the line that is giving me the error
permissionAdder.AddPermissions()
#some more code that isn't relevant
}
}
#class that I want to use the method from
public class FacebookActivity : BaseActivity
{
#method I want to call from FeedActivity.cs in the SharePictureOnFacebook method
public void AddPermissions()
{
Authorize(this, AdditionalPermissions);
}
}
アップデート:
静的メソッドにすると機能しますが、それを機能させるにはインスタンスを渡す必要があります。静的メソッドが機能する理由は何ですか?