我尽我最大的努力想出一种巧妙的方法来清理成堆的东西Blah blah = (Blah) this.findViewById(R.id.blah)
否则会污染我的小 Activity 的字段和 onCreate() 方法,为此,我觉得我不应该对 XML 中定义的每个视图使用 setContentView() 而应使用 getViewInflate().inflate() 。
Is Activity.setContentView()
有点像语法糖,它实际上是重复的getViewInflate().inflate()
对于 XML 上的每个视图?我读到一些话,好像它们是一样的。
如果我可以通过查看代码得到答案,请告诉我。我检查了 Activity.class,但只找到了注释。
Activity 上的 setContentView 实际上调用了 Activity 使用的 Window 上的 setContentView,它本身的作用不仅仅是膨胀布局。
您可以做的是使用反射将视图映射到类字段。您可以下载实用程序类在 Github 上 https://github.com/xgouchet/ViewFieldMatcher就是这样做的。
它将解析布局中声明的所有视图,然后尝试查找与 R.id 类中的 id 对应的名称。然后它会尝试在目标对象中找到同名的字段,并将其设置到相应的视图中。
例如,如果您有这样的布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</LinearLayout>
它会自动将其映射到您活动中的 textView1 字段。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)