有没有更好的方法或库来处理 android actionbar/toolbar 中的选项菜单
Is there a better way or library to handle options menu in android actionbar/toolbar
我有一个 OptionsMenu
,它只包含两项设置和注销。
为了实现它,我在每个 activity 中重复相同的代码。即,在每个 activity.
中实现 onCreateOptionsMenu
和 onOptionsItemSelected
方法
有更好的方法吗?我可以看到它只是一遍又一遍地重复相同的代码。如果我有十项活动,我会用十项完成。
请建议一些更好的方法来做到这一点。有没有办法在一个地方实现它等等
我希望我说得有道理。
谢谢!
只需创建一个新实用程序 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
。在那里你可以实现你想要的事件处理程序。为每个事件使用相应的事件处理程序模板函数。因此,与其将您的代码重复十次,您可以实现一次并在需要时使用它。
我有一个 OptionsMenu
,它只包含两项设置和注销。
为了实现它,我在每个 activity 中重复相同的代码。即,在每个 activity.
onCreateOptionsMenu
和 onOptionsItemSelected
方法
有更好的方法吗?我可以看到它只是一遍又一遍地重复相同的代码。如果我有十项活动,我会用十项完成。
请建议一些更好的方法来做到这一点。有没有办法在一个地方实现它等等
我希望我说得有道理。
谢谢!
只需创建一个新实用程序 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
。在那里你可以实现你想要的事件处理程序。为每个事件使用相应的事件处理程序模板函数。因此,与其将您的代码重复十次,您可以实现一次并在需要时使用它。