我构建了一个简单的自定义视图,并在构造函数中注册了onClickListener()。要在单击视图实例时启动新活动,我只需使用以下内容:
setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent i = new Intent(getContext(), com.test.myClass.class);
Context context = getContext();
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
});
由于我的知识水平仍然非常差,如果这是一个从View开始活动的好方法,我会徘徊,如果有一个更好的方法?
谢谢!
答案 0 :(得分:4)
这个实现非常有效,但可以通过两件小事来改进:
YourView extends View{
private boolean clicked = false;
private final View.OnClickListener myOnClickListener =
new View.OnClickListener(){
public void onClick(View v) {
if (!clicked){
clicked = true;
Context context = getContext();
Intent i = new Intent(context, com.test.myClass.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
}
public View(Context ctx){
super(ctx);
setOnClickListener(myOnClickListener);
}
}
改进如下:如果用户在您的视图上点击了疯狂,则可能是OnClickListener
被多次拼写的情况,因此会启动多个活动。布尔值修复它。
此外,您的OnClickListener
始终相同,但您只能在View中声明一次,并且不要多次实例化它们。
注意:您可能需要在某个时间点(clicked
将onPause()
设置为false,以保持您的View似乎是一个合理的位置。