如何在 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();
};
快速免责声明,我没有机会对此进行测试。只是我的想法。
所以我在某些活动中有一些弹出菜单按钮。问题是,在每个 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();
};
快速免责声明,我没有机会对此进行测试。只是我的想法。