我知道
Android提供了一些有用的方法来重写以定义菜单:
@Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(0,AIS,"Activity Inventory Sheet").setIcon(android.R.drawable.ic_menu_upload); // ... return true; } public boolean onOptionsItemSelected(MenuItem item) { Intent i; switch (item.getItemId()) { case AIS: i = new Intent(this,ActivityInventorySheet.class); startActivity(i); return true; // ... } return false; }
我希望我的Android应用程序的每个Activity和ListActivity共享此菜单.这是为了让每个(List)Activity中都有一个标准菜单,让用户可以在一次点击中跳转到应用程序的每个部分.
现在,实现此目的的最简单方法是在应用程序的每个(List)活动中复制并粘贴两个方法.我不喜欢这个编写的冗余代码:)
分类是合理的选择吗?我已经看到我的ListActivity之一的子类化不能很好地工作(从数据库中检索对象的线程会产生问题).
是否有其他方式通过活动共享菜单?
谢谢
解决方法
我认为没有理由不能完美地运作:
public abstract class MyListActivity extends ListActivity { @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(0,"Activity Inventory Sheet").setIcon(android.R.drawable.ic_menu_upload); // ... return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { Intent i; switch (item.getItemId()) { case AIS: i = new Intent(this,ActivityInventorySheet.class); startActivity(i); return true; // ... } return false; } }
然后让您的活动扩展MyListActivity而不是ListActivity.
I’ve already seen that sub-classing
one of my ListActivity does not work
very well (threads that retrieve
objects from a database are giving
problems).
这听起来像是一个完全不同的问题.您可能想发布一个单独的问题.简单地用Java扩展类不应该像你描述的那样产生任何问题.