我的应用程序在布局中有很多元素(超过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新手,这个让我难过 - 有人可以帮忙吗?
答案 0 :(得分:2)
您希望将Activity
完成的工作委托给您的Handler类。扩展Activity
使得处理程序成为它自己的活动(另一个屏幕),这不是你想要的。它应该与您现有的Activity进行交互。
这可以通过多种方式实现,但我会在构造函数中将对您的活动的引用传递给Handler,如下所示:
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();
}
您可能还希望将视图中的R.id引用作为构造函数的一部分传递给Handler。
答案 1 :(得分:0)
嗯,一个班级中的100个元素很多。也许考虑一下并找到一种方法来减少它:D
您尝试从外部类调用元素,因此您必须告诉您的元素是哪个类。你刚刚在当前课程中搜索的方式。