我用canvas绘制了一些位图。这里一切都很好,我使用了一个类扩展视图并使用构造函数super(context,attributeset); 现在我想使用另一个类的方法,但是如何让它工作,据我所知,视图扩展类需要这两个构造函数,它们必须设置为与android一起工作(我试图改变它,它告诉我它需要这样的构造函数,因为它扩展了视图)。
这是我的代码:
public class GameBoard extends View{
private static final String tag = "GameBoard";
private Paint p;
private Load load;
public GameBoard(Context context, Load load) {
super(context);
p = new Paint();
this.load = load;
//这个课程还有很多,但这里没什么关系。
}
这是另一个班级:
public class Load{
Context context;
// TODO从文件加载这些信息并使纹理适合手机屏幕大小 int mSize = 99; int tSize = 48; int screenCoords = 160; int rectX = 10; int rectY = 16;
String coordsFileName ="coordsData.txt";
public Load (Context context) {
this.context = context;
}
修改
我为每个遇到同样问题的人找到了解决方案。 只需在扩展类中创建一个对象,例如: 延伸课程: //上面的构造函数声明对象离开另一个类
private OtherClass otherclass;
//在其构造函数中,您只需创建一个新对象
this.otherclass = new OtherClass();
答案 0 :(得分:1)
尝试不是从XML布局创建GameBoard
对象,而是在代码中创建,然后将其添加到布局中。在这种情况下,您可以创建构造函数并传递所需的对象。您可以在xml中创建FrameLayout
,然后将视图添加到该布局。
答案 1 :(得分:1)
我没有刚创建我想要的类的新对象,所以我不需要将它原理为构造函数:
public class GameBoard extends View{
private static final String tag = "GameBoard";
private Paint p;
private Load load;
public GameBoard(Context context) {
super(context);
p = new Paint();
load = new Load();