在外部类中使用findViewById

时间:2015-06-05 21:13:38

标签: java class android-studio findviewbyid

我的应用程序在布局中有很多元素(超过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新手,这个让我难过 - 有人可以帮忙吗?

2 个答案:

答案 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

您尝试从外部类调用元素,因此您必须告诉您的元素是哪个类。你刚刚在当前课程中搜索的方式。