dgr*_*tin 6 android menu listactivity android-activity
我知道Android提供了一些有用的方法来重写以定义菜单:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, AIS, 0, "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;
}
Run Code Online (Sandbox Code Playgroud)
我希望我的Android应用程序的每个Activity和ListActivity共享此菜单.这是为了让每个(List)Activity中都有一个标准菜单,让用户可以在一次点击中跳转到应用程序的每个部分.
现在,实现此目的的最简单方法是在应用程序的每个(List)活动中复制并粘贴两个方法.我不喜欢这个编写的冗余代码:)
分类是合理的选择吗?我已经看到我的ListActivity之一的子类化不能很好地工作(从数据库中检索对象的线程会产生问题).是否有其他方式通过活动共享菜单?
谢谢
Mir*_* N. 13
我使用带有静态方法的辅助类来初始化和处理常用菜单选项,然后每个Activity定义自己的onCreateOptionsMenu等等,将常见任务委托给助手类,并可以添加特定于该Activity的其他菜单项.
就像是
class SharedMenu {
public static void onCreateOptionsMenu(Menu menu) {
menu.add(...);
menu.add(...);
}
}
public class MyActivity extends Activity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(...); // specific to this activity
SharedMenu.onCreateOptionsMenu(menu);
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
有更多的方法onMenuItemSelected等
编辑:我没有使用公共基类,因为我需要其中两个开始,一个用于活动,另一个用于列表活动,然后在我的情况下,我需要在一些活动上添加自定义菜单选项.
Mar*_*k B 10
我认为没有理由不能完美地运作:
public abstract class MyListActivity extends ListActivity
{
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, AIS, 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;
}
}
Run Code Online (Sandbox Code Playgroud)
然后让您的活动扩展MyListActivity而不是ListActivity.
我已经看到我的ListActivity之一的子类化不能很好地工作(从数据库中检索对象的线程会产生问题).
这听起来像是一个完全不同的问题.您可能想发布一个单独的问题.简单地用Java扩展类不应该像你描述的那样产生任何问题.
| 归档时间: |
|
| 查看次数: |
6594 次 |
| 最近记录: |