我已经开始开发一个应用程序。我昨天构建了菜单,但是 onClick 方法不起作用!我创建了一个扩展 View 的类并将其命名为 MainMenuObject - 该类适用于主菜单中的任何对象(按钮、徽标等)。我为他们创建了一个特殊的类,因为我在菜单启动时制作动画。在我构建了 MainMenuObject 类之后,我构建了另一个类 (OpeningTimesView),它扩展了 View,其中包含主菜单的所有按钮,并将用作主要活动的布局。
一切都很好,动画效果很好,我想在我的按钮上放置监听器,所以我在 OpeningTimesView 类中添加了 onClickListener 的实现,并覆盖了 onClick 方法。然后我使用 setOnClickListener(this) 和 setClickable(true) 将侦听器添加到按钮中,但它不起作用!我什么都试过了!请帮我弄清楚我做错了什么。我在 onClick 方法中添加了一个 toast,它不依赖于任何“if”,但它也不会显示。
(顺便说一句,有没有办法将屏幕宽度和高度定义为所有类都可以访问的变量?它不能是静态的,因为您从显示对象获取高度和宽度,但必须有另一种方式)
这是代码:
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);
}
提前感谢,埃拉德!