如何在 xamarin 中的活动之间共享代码 android

How to share code between activities in xamarin android

所以我在某些活动中有一些弹出菜单按钮。问题是,在每个 activity 中,我都必须使用相同的代码一遍又一遍地初始化弹出菜单...

初始化代码如下所示:

var button = FindViewById(Resource.Id.moreButton);

button.Click += (s, arg) =>
{
    PopupMenu menu = new PopupMenu(this, button);
    menu.Inflate(Resource.Menu.PopupMenu);
    menu.Show();

    menu.MenuItemClick += (s1, arg1) =>
    {
        switch (arg1.Item.TitleFormatted.ToString())
        {
            case "Profile":
                StartActivity(typeof(ProfileView));
                break;
            case "Prices":
                StartActivity(typeof(PricesView));
                break;
            case "Terms":
                StartActivity(typeof(TermsView));
                break;
            case "Privacy":
                StartActivity(typeof(PrivacyView));
                break;
        }
    };
};

所以在每个有弹出菜单按钮的 activity 中,我必须使用这段代码来使按钮工作....我如何在所有活动中共享这段代码部分?

我会创建您自己的 class 来扩展 'PopupMenu',然后添加一个方法来初始化所有内容并显示它。

public class MyPopupMenu : PopupMenu 
{
    //May need to add constructors

    public void display()
    {
        this.Inflate(Resource.Menu.PopupMenu);
        this.Show();

        //May need to change EventArgs to a valid subclass of EventArgs
        this.MenuItemClicked += (object sender, EventArgs arg1) =>
        {
            switch (arg1.Item.TitleFormatted.ToString())
            {
                case "Profile":
                    break;
                case "Prices":
                    break;
                case "Terms":
                    break;
                case "Privacy":
                    break;
            }
        }
    }
}

然后您可以将每个页面上的代码缩短为:

var button = FindViewById(Resource.Id.moreButton);

button.Click += (s, arg) => {
    PopupMenu menu = new PopupMenu(this, button); 
    menu.display();
};

快速免责声明,我没有机会对此进行测试。只是我的想法。