我在android中使用导航抽屉,我已经构建了两种方式的监听器。 但在所有编程代码中,如何更好的代码?
1)我实现了一个类
的第一个方法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
}
}
);
您认为哪个更好,为什么? 谢谢=)
答案 0 :(得分:1)
实际上它完全取决于你的实施。
1)对于案例1,假设您正在为视图实现一个类。然后,您将只能在此类中使用已实现的方法一次。
2)案例2允许您创建多个功能。
从View.OnClickListener
获取示例,如果您要实现此功能,您将只能在课程中使用onClick
方法一次。因此,此类中的所有视图都将使用相同的onClick
方法。
public class MainActivity implements View.OnClickListener {
public void onClick(View v) {
....
}
}
但是如果你将使用setOnClickListener(),你可以每次都实现不同的(或相同的)方法。
答案 1 :(得分:0)
实际上,选择其中一个是您的个人品味,MainActivity的责任以及表演的组合。
我通常赞成合成,并尽量避免在同一个班级中混合很多责任。您正在实施的监听器可能隐藏在工厂或其他东西后面,使MainActivity的代码更简单,更易于维护。
关于表演,你应该选择你的第一选择,但事实上,实例化一个课程不应该有任何重大影响。
答案 2 :(得分:0)
在这种情况下,我总是使用第一种方法,因为onAttach方法中的内部片段我可以检查活动以实现与此片段交互所需的接口,例如,抛出异常作为必须实现接口的信号。除此之外,在这种情况下,您不需要编写类似setListener的方法。当然,这是我对这个具体案例的看法。