2015-09-05 91 views
-1

我在android中使用導航抽屜,並且我已經構建了兩種方式的偵聽器。 但在所有編程代碼中,代碼如何更好?什麼是更好的編碼習慣,使用工具或方法

1)I實施在第二方式,我只使用一個實例的類

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{ 

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
navigationView.setNavigationItemSelectedListener(this); 

@Override 
public boolean onNavigationItemSelected(MenuItem menuItem) { 
//CODE 
} 
} 

2)第一種方法。

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
navigationView.setNavigationItemSelectedListener(
      new NavigationView.OnNavigationItemSelectedListener() { 
       @Override 
       public boolean onNavigationItemSelected(MenuItem menuItem) { 
        //CODE 
       } 
      } 
    ); 

你認爲哪種更好,爲什麼? 謝謝=)

+1

性能方面,我相信'implements'是最好的方法,但讓我們看看答案。 –

回答

1

其實它完全取決於你的實現。

1)對於案例1,假設您正在爲視圖實現一個類。然後,您將能夠在該課程中僅使用已實施的方法一次。

2)情況2允許您創建多個功能。

View.OnClickListener爲例,如果您要實現此功能,您只能在課程中使用onClick方法一次。所以,這個類裏面的所有視圖都會使用這個相同的方法onClick

public class MainActivity implements View.OnClickListener { 
    public void onClick(View v) { 
     .... 
    } 
} 

但是,如果您將使用setOnClickListener(),則可以每次都實現不同(或相同)的方法。

0

其實,選擇其中之一是你的個人品味,MainActivity的責任和可能的表演的組合。

我通常贊成寫作,並儘量避免在同一個班級混合很多責任。您正在實施的監聽器可能隱藏在工廠或其他東西后面,使MainActivity的代碼更簡單,更易於維護。

關於表演,你應該選擇你的第一選擇,但事實上,實例化一個班級不應該有任何重大影響。

0

在這種情況下,我總是使用第一種方法,因爲在方法onAttach中的片段中,我可以檢查活動以實現與此片段交互所需的接口,例如,拋出異常作爲必須實現接口的信號。除此之外,在這種情況下,您不需要編寫像setListener這樣的方法。當然,這是我的這個具體案例。