0

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);
       }
    }

アップデート:

静的メソッドにすると機能しますが、それを機能させるにはインスタンスを渡す必要があります。静的メソッドが機能する理由は何ですか?

4

1 に答える 1

0

投稿されたコードに基づいて、これは機能するはずです。ただし、別の名前空間に同じクラス名があり、それが使用されている場合、以前にこれに遭遇しました。

于 2013-06-12T19:09:02.307 に答える