我想为所有活动编写一个处理程序。但是我有一个问题:我知道对于这个任务,我必须继承Activity类并覆盖这个处理程序,如下所示:
class MyActivity extends Activity {
// ...
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// ...
}
}
但是,当我从Activity和其他MapActivity扩展一些活动时,我必须做些什么?
答案 0 :(得分:1)
这是不可能的,因为Java中无法实现多重继承,MapActivity
和Activity
无法扩展您控制的类。
您必须在每个基本活动中使用onOptionsItemSelected(MenuItem item)
方法,但如果您调用一个共享的单独类,它们可以共享相同的代码。
e.g。
class BaseActivity extends Activity {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
MenuHelper.handleOnItemSelected(item);
}
}
class BaseMapActivity extends MapActivity {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
MenuHelper.handleOnItemSelected(item);
}
}
class MenuHelper {
public static void handleOnItemSelected(MenuItem item) {
// do something..
}
}
答案 1 :(得分:0)
您可以创建扩展MapActivity的MyMapActivity类,并在onOptionsItemSelected
实现中为此和另一个MyActivity
调用相同的过程。
或者您可以使用MenuItem.setOnMenuItemClickListener
为每个菜单项设置自定义侦听器,并使此侦听器将事件调度到您的过程。