如何在xamarin android

时间:2017-09-21 15:09:07

标签: android xamarin xamarin.android popupmenu

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

初始化代码如下所示:

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

因此,在每个具有弹出菜单按钮的活动中,我必须使用此代码使按钮工作....我如何通过所有活动共享此代码部分?

1 个答案:

答案 0 :(得分:1)

我会创建自己的类,扩展' 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();
};

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