所以我在一些活动中有一些弹出菜单按钮。问题是,在每个活动中,我必须使用相同的代码一遍又一遍地初始化弹出菜单......
初始化代码如下所示:
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;
}
};
};
因此,在每个具有弹出菜单按钮的活动中,我必须使用此代码使按钮工作....我如何通过所有活动共享此代码部分?
答案 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();
};
快速免责声明,我没有机会对此进行测试。只是我的想法。