我有一个OptionsMenu
,它只包含两项设置和注销。
为了实现它,我在每个活动中重复相同的代码。即,在每项活动中实施onCreateOptionsMenu
和onOptionsItemSelected
方法。
有更好的方法吗?我可以看到,它只是一遍又一遍地重复相同的代码。如果我有十个活动,我就是十点钟做的。
请建议一些更好的方法来做到这一点。有没有办法在单个地方实现它等。
我希望我有所作为。
谢谢!
答案 0 :(得分:2)
如果您使用默认菜单要求扩展Android Activity类,那么这是一个很好的OO练习。像这样:
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
public class OptionsMenuActivity extends Activity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(Menu.NONE, 0, 0, "Settings");
menu.add(Menu.NONE, 1, 1, "Logout");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 0: // Settings
// Do your funky stuff
break;
case 1: // Logout
break;
}
return false;
}
}
现在,从OptionsMenuActivity扩展的所有活动类都将具有此菜单。
答案 1 :(得分:0)
只需创建一个新的实用程序类( MenuHelper.java )来处理这个问题。在其中,您可以使用实例化菜单的方法。
然后在该类中只有一个设置菜单的方法(setupMenu(上下文cxt,菜单菜单)) - 你只需要将正确的对象传递给方法,如Activity Context和Menu - (可能是这样的: setupMenu(上下文cxt,菜单菜单))。
答案 2 :(得分:-1)
是的,还有更好的方法。创建一个用于模板化事件处理程序的类。也许你可以命名为EventTemplate
。在那里,您可以实现所需的事件处理程序。为每个事件使用相应的事件处理程序模板函数。因此,您可以实现一次并在需要时随时使用它,而不是将代码重复十次,而不是在需要时使用它。