gpt4 book ai didi

java - 无法从扩展 ViewGroup 调用方法

转载 作者:行者123 更新时间:2023-11-30 02:09:11 24 4
gpt4 key购买 nike

我已经扩展了一个 LinearLayout 代表我的主要 ui block ,在这个里面我使用了两个扩展的 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 的所有公共(public)方法 - 但我不能在扩展的 Bar 中为其他扩展类做同样的事情。我能做的只是初始化它们。

create()

最佳答案

Now inside the Bar class I can't do:

UpLinearLayout up = new UpLinearLayout(context, 65);
up.anotherButton(context);

你不能,因为 anotherButtonBar 的一个方法,但是你正在调用 UpLinearLayout 的一个实例,它没有方法调用 anotherButton。如果你想从 bar 添加一个 ButtonUpLinearLayout 你可以这样做:

public void anotherButton(LinearLayout layout) {
Button button1 = new Button(getContext());
button1.setText("Testing");
button1.setTextSize(18);
layout.addView(button1);
}

然后像anotherButton(up);这样调用它

或者在UpLinearLayout中添加anotherButton。如果您使用 Base 类声明您的成员,请不要忘记转换为确切的类型。例如

你声明

LinearLayout upperLayout;

如果你想访问你自定义的方法

UpperLinearLayout extend LinearLayout

您必须将 upperLayout 显式转换为 UpperLinearLayout

关于java - 无法从扩展 ViewGroup 调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30349548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com