我想为所有活动编写一个处理程序。但我有一个问题:我知道对于此任务,我必须继承Activity类并像下面这样覆盖此处理程序:



class MyActivity extends Activity {

    // ...

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // ...
    }
}


但是,当我有一些活动从Activity扩展而其他活动从MapActivity扩展时,该怎么办?

最佳答案

这是不可能的,因为Java中的多重继承是不可能的,并且MapActivityActivity无法扩展您控制的类。

您在每个基本活动中都必须有一个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..
   }

}

07-24 09:47
查看更多