gpt4 book ai didi

java - 在外部类中使用 findViewById

转载 作者:行者123 更新时间:2023-12-02 04:36:33 32 4
gpt4 key购买 nike

我的应用程序在布局中有许多元素(远超过 100 个),并且在 MainActivity 中声明所有元素以便访问它们,这使得我的 MainActivity 类难以阅读和调试。因此,我创建了一个新类来处理显示元素:

public class DisplayElementHandler extends Activity{
private EditText txtUserID;
public void Initialise(){ //initialise all display elements
txtUserID = (EditText) findViewById;
}
}

但是 findViewById 并没有像我预期的那样工作。

我是一名 Android Studio/Java 新手,这个问题让我很困惑 - 有人可以帮忙吗?

最佳答案

您希望将 Activity 完成的工作委托(delegate)给您的 Handler 类。扩展 Activity 使处理程序成为它自己的 Activity (另一个屏幕),这并不是您真正想要的。它应该与您现有的 Activity 交互。

这可以通过多种方式实现,但我会将对您的 Activity 的引用传递给构造函数中的处理程序,如下所示:

 public class DisplayElementHandler {
private Activity activity;
public DisplayElementHandler(Activity activity) {
this.activity = activity;
}

public void Initialise(){ //initialise all display elements
txtUserID = (EditText) activity.findViewById(...);
}
}

然后在您的Activity中:

 public void onCreate(Bundle b) {
super.onCreate(b);
new DisplayElementHandler(this).Initialise();
}

您可能还希望将 View 的 R.id 引用传递到处理程序中,作为构造函数的一部分。

关于java - 在外部类中使用 findViewById,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30675913/

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