是否有更好的方法或库来处理android操作栏/工具栏中的选项菜单

时间:2015-07-24 13:02:16

标签: android android-actionbar android-toolbar android-optionsmenu

我有一个OptionsMenu,它只包含两项设置和注销。 为了实现它,我在每个活动中重复相同的代码。即,在每项活动中实施onCreateOptionsMenuonOptionsItemSelected方法。

有更好的方法吗?我可以看到,它只是一遍又一遍地重复相同的代码。如果我有十个活动,我就是十点钟做的。

请建议一些更好的方法来做到这一点。有没有办法在单个地方实现它等。

我希望我有所作为。

谢谢!

3 个答案:

答案 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。在那里,您可以实现所需的事件处理程序。为每个事件使用相应的事件处理程序模板函数。因此,您可以实现一次并在需要时随时使用它,而不是将代码重复十次,而不是在需要时使用它。