0

我的 android 应用程序以最新平台为目标。我是该平台的新手,并且在操作栏上阅读了一些相互矛盾的信息。我用它来导航的方式是。

菜单.xml

<menu>
            <item android:id="@+id/action_sort_size"
                  android:icon="@android:drawable/ic_menu_sort_by_size"
                  android:title="@string/action_barabc"
                  android:onClick="abc" />
            <item android:id="@+id/action_sort_alpha"
....

在我的活动中

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
public void abc(MenuItem item) {
//...
}

这可行,但后退/向上导航无法正常工作。可能是无关的,还是想确认一下。

但是,我也看到了像这里这样的实现 ,它打开了项目。

@Override
  public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.menuitem1:
      Toast.makeText(this, "Menu Item 1 selected", Toast.LENGTH_SHORT)
          .show();
      break;
    case R.id.menuitem2:
....
}

哪种方法更好?

4

1 回答 1

0

在我看来,更好的方法是切换方法。原因不多,但我会列出它们:

  • 代码是集中的。你没有 x 数量的方法基本上做同样的事情。它使您的代码更具可读性;它是“更清洁的”。您还可以使用 switch 获得默认语句,如果您搞砸并忘记专门为布局中的元素创建案例,这会有所帮助。如果你真的想要一个使用 xml 的集中式方法,你会onClick引用相同的方法并检查View参数的 id。这与onOptionsItemSelected.
  • 它是 API 的一部分。如果 Android 工程师不希望开发人员使用它,他们就不会将其作为 API 的一部分。是的,XML 在技术上是 API,但 XML 应该更多地用于布局和视觉效果,而不是逻辑。
  • 每个人都使用它。我看过的所有教程和大家的代码都使用这种方法。它现在更像是一种约定。

它在很大程度上是个人的,但如果它看起来像是一个约定,并且每个人都使用它,我会坚持它。特别是如果您作为团队的一员工作。应避免对此类任意事物使用不同的编码样式。

关于您的后退/后退导航,您使用哪种方式应该不会有所不同,因为您必须实现相同的代码才能获得该导航类型。

于 2012-12-11T01:17:43.447 回答