我开始开发一个应用程序,昨天我创建了菜单但是onClick方法不起作用!我创建了一个类继承View并将其命名为MainMenuObject - 该类是主菜单中任何对象(按钮、标志等)的通用类。我为它们创建了一个特殊的类,因为当菜单启动时我正在执行动画。建立MainMenuObject类之后,我又建立了另一个类(OpeningTimesView),它继承了View并将主菜单中所有按钮放在其中,并且将作为主Activity的布局。
一切都很好,动画效果非常好,我想在我的按钮上添加监听器,所以我向OpeningTimesView类添加了一个onClickListener的实现,并重写了onClick方法。然后我使用setOnClickListener(this)和setClickable(true)将监听器添加到按钮上,但它不起作用!我尝试了所有方法!请帮助我找出问题出在哪里。我在onClick方法中添加了一个Toast,它不依赖于任何“if”语句,但是它也不显示。
(顺便问一下,有没有办法将屏幕宽度和高度定义为变量,以便所有类都可以访问?它不能是静态的,因为您从一个display对象获取高度和宽度,但必须还有其他方法)
以下是代码:
public class OpeningTimesView extends View implements OnClickListener{
private MainMenuObjectView searchButton;
private MainMenuObjectView supportButton;
private MainMenuObjectView aboutButton;
private int screenWidth;
private int screenHeight;
public OpeningTimesView(Context context, Display dis) {
super(context);
this.screenWidth = dis.getWidth();
this.screenHeight = dis.getHeight();
searchButton = new MainMenuObjectView(context, 200, MovingMode.RIGHT, R.drawable.search, dis);
supportButton = new MainMenuObjectView(context, 400, MovingMode.LEFT, R.drawable.support, dis);
aboutButton = new MainMenuObjectView(context, 600, MovingMode.RIGHT, R.drawable.about, dis);
searchButton.setClickable(true);
supportButton.setClickable(true);
aboutButton.setClickable(true);
searchButton.setOnClickListener(this);
supportButton.setOnClickListener(this);
aboutButton.setOnClickListener(this);
}
@Override
public void onClick(View view){
Toast.makeText(getContext(), "Search button pressed", Toast.LENGTH_SHORT).show();
if(view == searchButton){
Toast.makeText(getContext(), "Search button pressed", Toast.LENGTH_SHORT).show();
}
else if(view == supportButton){
Toast.makeText(getContext(), "Support button pressed", Toast.LENGTH_SHORT).show();
}
else Toast.makeText(getContext(), "About button pressed", Toast.LENGTH_SHORT).show();
}
@Override
public void onDraw(Canvas canvas)
{
// Drawing the buttons
this.searchButton.onDraw(canvas);
this.aboutButton.onDraw(canvas);
this.supportButton.onDraw(canvas);
}
提前感谢,Elad!