无法从扩展ViewGroup调用方法

时间:2015-05-20 12:23:09

标签: java android

我已经扩展了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内为其他扩展类做同样的事情。 我能做的只是初始化它们。

create()

1 个答案:

答案 0 :(得分:1)

  

现在在Bar课程中,我无法做到:

anotherButton

您不能因为BarUpLinearLayout的方法,但您正在调用anotherButton的实例,该实例没有方法调用Button。如果您想从栏中添加UpLinearLayoutpublic 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}}