gpt4 book ai didi

android onclicklistener 在类里面有按钮吗?

转载 作者:行者123 更新时间:2023-11-29 19:46:18 25 4
gpt4 key购买 nike

我制作了一个动态创建 3 个按钮的应用程序。由于某些原因,我需要从我创建的类中创建每个按钮。

在这个类中我写了这个:

public class FloatButton{
public void generate(String text, final Context context){


Button button = new Button(context);
button.setText(text);
}

现在在我的主要 Activity 中,我创建了一个此类的对象:

FloatButton floatButton = new FloatButton();
floatButton.generate("float Button", this);

现在解决问题...我需要为每个按钮添加一个单独的 onclick 监听器。我想通过单击按钮与类(class)的其他按钮进行交互。这就是为什么我需要将 onclick 监听器写入我的主要 Activity 而不是写入 FloatButton 类。所以我尝试了以下方法:

floatButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

}
});

这不起作用,因为 floatButton 对象没有 setOnClickListener 方法,因为它不是按钮类的一部分。

我还尝试为类中的按钮设置一个 Id。因此这个类看起来像这样:

public class FloatButton{
public void generate(String text, int id, final Context context){


Button button = new Button(context);
button.setId(id);
button.setText(text);

}
}

现在我希望通过按钮id设置onclicklistener:

final OnClickListener listener = new View.OnClickListener() {

@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.1:
...
break;
case R.id.2:
...
break;
}
}

可悲的是 R.id。 ... 也不起作用,因为 Id 仅在按钮已创建时可用。

那么我还能尝试做什么呢?

最佳答案

你可以像下面这样实现:

public class FloatButton{
private ClickListener listener;

public void generate(String text, final Context context){
Button button = new Button(context);
button.setText(text);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(listener != null){
listener.onClick(v);
}
}
});
}
public void setListener(ClickListener listener){
this.listener = listener;
}

public interface ClickListener {
void onClick(View view);
}
}

Activity 类

FloatButton floatButton = new FloatButton();
floatButton.generate("float Button", this);
floatButton.setOnClickListener(new FloatButton.ClickListener() {
@Override
public void onClick(View v) {
// You will receive all the generated button click events here in
// single callback.
// Do whatever you want to do here...
}
});

关于android onclicklistener 在类里面有按钮吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37567151/

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