2012-12-11 115 views
0

我的android應用程序定位最新的平臺。我是該平臺的新手,並且在操作欄上閱讀有點衝突的信息。我用它來導航的方式是。動作欄導航

menu.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) { 
//... 
} 

這個工作,但返回/向上導航無法正常工作。可能是無關的,仍然要證實。

但是,我也看到實施像here 它開啓項目。

@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: 
.... 
} 

哪種方法更好?

回答

0

在我看來,更好的方法是切換方法。原因並不多,但我會列出它們:

  • 代碼是集中的。你沒有x的方法基本上做同樣的事情。它使您的代碼更具可讀性;它是「更清潔」的。您還可以使用開關得到一個默認語句,這可以幫助您解決問題,並且忘記專門爲佈局中的某個元素創建案例。 如果您確實想要使用xml的集中方法,那麼您應該使onClick引用相同的方法並檢查參數View的ID。這與onOptionsItemSelected基本相同。
  • 它是API的一部分。如果Android開發人員不希望開發人員使用它,那麼Android工程師就不會將其作爲API的一部分。是的,XML是技術性的API,但是XML應該更多地用於佈局和視覺效果,而不是邏輯。
  • 每個人都使用它。所有我見過的教程和每個人的代碼都使用這種方法。現在更多的是一種慣例。

這很大程度上是個人的,但如果看起來這是一個慣例,每個人都使用它,我會堅持它。特別是如果你正在作爲一個團隊的一部分工作。應該避免使用不同的編碼風格來適應這種混雜的東西。

而關於你的上/下導航,它不應該以你使用它的方式發揮作用,因爲你必須實現相同的代碼才能獲得該導航類型。