所以,我正在为Android编写一个程序。现在,我在一个名为GraphicsView的类中,它扩展了View并实现了View.OnClickListener。我创建了一个按钮mLeft,按下时应该将对象移动到左侧。我试图让它显示在屏幕的左下角。在我的GraphicsView构造函数中,我有代码:
mLeft = new Button (context.getApplicationContext ());
mLeft.setId (1); // wasn't sure what else to set for an id, I only did that to see if it would fix anything
mLeft.setOnClickListener (this);
在我的onDraw中我有:
mLeft.draw (canvas);
只需使用这段代码,程序运行正常,当我进入使用GraphicsView的活动时,它的工作完全正常,除了按钮没有显示在任何地方的面。
我的构造函数中也有这个doe,就在setOnClickListener:
的正下方mLeft.setX (0);
mLeft.setY (mDisplay.getHeight () - 64);
mLeft.setHeight (64);
mLeft.setWidth (64);
mLeft.setBackgroundColor (80000000);
mLeft.setText ("<");
每当我在那里有这个代码,然后我去那个活动,程序就崩溃了。我在那里有onClick,除了顶部的“Button mLeft”,这是我与此按钮关联的所有代码。基本上,每当我尝试从Button调用任何这些方法时,程序看起来都会崩溃。我已经尝试过对这些进行评论,但一次只有一个出现在代码中,所以我知道他们每个人都可以杀死这个程序。
LogCat说:“12-04 15:11:03.581:I / dalvikvm(2692):找不到方法android.widget.Button.setX,从方法edu.pacificu.cs.Views.GraphicsView引用。”
感谢您的帮助。
答案 0 :(得分:0)
mLeft = new Button (context.getApplicationContext ());
不要那样做。使用new Button(context)
,然后才context
为Activity
。除非您知道为什么使用它,否则永远不要使用getApplicationContext()
。
LogCat说:“12-04 15:11:03.581:I / dalvikvm(2692):找不到方法android.widget.Button.setX,从方法edu.pacificu.cs.Views.GraphicsView引用。”
正如@Selvin指出的那样,您似乎是在Android 2.x上运行此应用程序,使用Android 2.x上不存在的方法(setX()
)。 setX()
和setY()
主要用于动画效果(例如幻灯片)。 View
的X / Y / Z位置由其容器(布局)和容器的配置决定。