Xamarin:将EventListener从Java转换为Android的C#

s1ag04yj  于 2022-12-07  发布在  Java
关注(0)|答案(2)|浏览(118)

我试图找到一种方法如何将以下代码段转换为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中。不幸的是,我还没有找到任何方法来正确地翻译它。你能用这个确切的例子给我看看吗?谢谢:)

aiqt4smr

aiqt4smr1#

建议的方法是使用事件,如下面的代码所示。

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

如果您仍然缺少C#中的java,并且害怕事件,您可以执行以下操作:
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的其他类。
如果您在活动中,请将“context”替换为“this”

vzgqcmou

vzgqcmou2#

可以简单地添加以下内容:

player.Completion += () => 
{   
    //Do what you want here. 
    playlistSongCounter++;
    player.Play();  
};

相关问题