有没有更好的方法或库来处理 android actionbar/toolbar 中的选项菜单

Is there a better way or library to handle options menu in android actionbar/toolbar

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

中实现 onCreateOptionsMenuonOptionsItemSelected 方法

有更好的方法吗?我可以看到它只是一遍又一遍地重复相同的代码。如果我有十项活动,我会用十项完成。

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

我希望我说得有道理。

谢谢!

只需创建一个新实用程序 class (MenuHelper.java) 来处理此问题。在其中你可以有一个实例化你的菜单的方法。

然后在那个 class 中只有一个方法来设置你的菜单 (setupMenu(Context cxt, Menu menu) - 你只需要将适当的对象传递给 Activity Context 之类的方法, 和菜单 - (也许是这样的: setupMenu(Context cxt, Menu menu) ).

如果您使用默认菜单要求扩展 Android Activity class,这是一个很好的 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 扩展而来的所有 activity class 都将具有此菜单。

是的,有更好的方法。创建一个 class 用于模板化事件处理程序。也许您可以将其命名为 EventTemplate。在那里你可以实现你想要的事件处理程序。为每个事件使用相应的事件处理程序模板函数。因此,与其将您的代码重复十次,您可以实现一次并在需要时使用它。