正如标题所示,Android中有哪些更好的技巧?我提到了几个文档,但是找不到我需要的更多细节。
考虑我有5个以上的观看次数,我想在一个地方处理他们的点击次数,然后创建ClickListener object
并传递它更好或者在Activity / Fragment中实现ClickListener interface
然后传递活动/片段的实例更好,为什么?
修改
让我添加一个例子,因为大多数人都无法理解陈述
案例-1 :
private final View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
//some code
}
};
public void doSomeTask(){
view1.setOnClickListener(onClickListener);
view2.setOnClickListener(onClickListener);
view3.setOnClickListener(onClickListener);
}
案例-2:
public class SomeActivity extends AppCompatActivity implements View.OnClickListener {
//some code
public void doSomeTask(){
view1.setOnClickListener(this);
view2.setOnClickListener(this);
view3.setOnClickListener(this);
}
@Override
public void onClick(View view) {
//some code
}
}
Case-1或Case-2的最佳方法是哪种?
答案 0 :(得分:1)
了解更多信息Check here
答案 1 :(得分:0)
我认为这取决于。
我个人更喜欢在可能的情况下创建一个实现接口(Case-1)的单独类。
如果您需要使用某个类的字段和方法,最好只实现该接口(Case-2)。
还有另一种情况 - 当您未明确设置界面时,例如Fragment
回调接口。 Fragment
有自己的生命周期 - 所以使用回调设置器是行不通的。我们所知道的是,在某一点上它们会被附加(在onAttach()
中),所以我们尝试将收到的Context
转换为我们需要的接口。这样,您必须在实例化Activity
的{{1}}中实现接口。
小心其他一些问题。例如。你有一个需要监听器对象的单例类。您可以在Fragment
中实现该接口,并将实例传递给该类。但Activity
可以被销毁并重新创建 - 这将导致StrictMode报告的Activity
,因为该单例类仍将保留对前一个activity instance count violation
实例的引用。