我已经扩展了LinearLayout
代表我的主要ui块,在此我使用了两个更加扩展的LinearLayout
。
如果我必须用伪代码写下来就像这样:
Bar extends LinearLayout
init() //here I initialize the LinearLayout and set some properties.
//the Constructor
public Bar(Context context, int height ) {
super(context);
this.context = context;
this.height = height;
init(); //calling init() inside the constructor
}
并且在Bar内部代码是:
public void create() {
upLinearLayout = new UpLinearLayout(context, 40 );
downLinearLayout = new DownLinearLayout(context, 160);
this.addView(upLinearLayout);
this.addView(downLinearLayout);
}
所以当我在我的MainActivity上时,我会给出:
Bar bb = new mBar(this, 300);
bar.create();
其中create()
是:
public void create() {
upLinearLayout = new UpLinearLayout(context, 40 );
downLinearLayout = new DownLinearLayout(context, 160);
this.addView(upLinearLayout);
this.addView(downLinearLayout);
}
到目前为止,代码运行良好。 但我无法通过属于upLinearLayout或downLinearLayout的Bar方法调用,例如:
public void anotherButton(Context context) {
Button button1 = new Button(context);
button1.setText("Testing");
button1.setTextSize(18);
this.addView(button1);
}
现在在Bar课程中,我无法做到:
UpLinearLayout up = new UpLinearLayout(context, 65);
up.anotherButton(context);
它给了我错误:
Error:(47, 11) error: cannot find symbol method anotherButton(Context)
tl; dr在MainActivity中我可以调用Bar
的所有公共方法 - 但我不能在扩展Bar
内为其他扩展类做同样的事情。
我能做的只是初始化它们。
答案 0 :(得分:1)
现在在Bar课程中,我无法做到:
anotherButton
您不能因为Bar
是UpLinearLayout
的方法,但您正在调用anotherButton
的实例,该实例没有方法调用Button
。如果您想从栏中添加UpLinearLayout
到public void anotherButton(LinearLayout layout) {
Button button1 = new Button(getContext());
button1.setText("Testing");
button1.setTextSize(18);
layout.addView(button1);
}
,您可以执行以下操作:
anotherButton(up);
然后将其称为anotherButton
或在UpLinearLayout
中添加LinearLayout upperLayout;
。如果您使用Base类声明您的成员,请不要忘记转换为确切的类型。 E.g。
你宣布了
UpperLinearLayout extend LinearLayout
如果您想访问自定义
的方法upperLayout
您必须明确地将UpperLinearLayout
投射到{{1}}