Xamarin: перевести EventListener из Java в C # для Android - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь найти способ, как преобразовать следующие фрагменты кода в c # xamarin, исходящие из Java:

mediaPlayer.setOnCompletionListener(new OnCompletionListener() {

            public void onCompletion(MediaPlayer mp) {

                Log.i("Completion Listener","Song Complete");
                Toast.makeText(context, "Media Completed", Toast.LENGTH_SHORT).show();
            }
        });

Это простой EventHandler, который существует либо в Java, а также .net для Android,К сожалению, я пока не смог найти способ как правильно это перевести.Можете ли вы показать мне с этим точным примером?Спасибо:)

1 Ответ

0 голосов
/ 11 октября 2018

Рекомендованный способ сделать это - использовать события, как показано в приведенном ниже коде.

mediaPlayer.Completion += MediaPlayer_Completion;
...
}
private void MediaPlayer_Completion(object sender, EventArgs e)
{
  Android.Util.Log.Info("Completion Listener", "Song Complete");
  Toast.MakeText(context, "Media Completed", ToastLength.Short).Show();
}

Если вам все еще не хватает Java в C # и вы боитесь событий, вы можете сделать следующее:

C # не поддерживает анонимные интерфейсы.Вам нужно создать отдельный класс, который реализует IOnCompletionListener.например, это может быть ActivityClass:

public class MyActivity: Activity, IOnCompletionListener
{
       public void OnCompletion(Android.Media.MediaPlayer mp)
        {
            Android.Util.Log.Info("Completion Listener", "Song Complete");
         Toast.MakeText(this, "Media Completed", ToastLength.Short).Show();
        }
...
   {
   ...
    mediaPlayer.SetOnCompletionListener(this);
   ...
   }
}

или какой-то другой класс, который наследуется от Java.Lang.Object и реализует IOnCompletionListener.

, если вы находитесь в Activity, замените 'context' на 'this«

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...