我想为所有活动编写一个处理程序。但我有一个问题:我知道对于此任务,我必须继承Activity类并像下面这样覆盖此处理程序:
class MyActivity extends Activity {
// ...
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// ...
}
}
但是,当我有一些活动从Activity扩展而其他活动从MapActivity扩展时,该怎么办?
最佳答案
这是不可能的,因为Java中的多重继承是不可能的,并且MapActivity
和Activity
无法扩展您控制的类。
您在每个基本活动中都必须有一个onOptionsItemSelected(MenuItem item)
方法,但是如果您调用一个单独的共享类,则它们可以共享相同的代码。
例如
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..
}
}