我制作了一个名为 ActionButton 的自定义按钮,我正在尝试引用并行视图层次结构中的另一个视图。我想过使用findViewById(int id)
,但我一直在使用NullPointerExceptions
,所以我尝试通过 RootView 获取引用getRootView()
,并从那里获取视图findViewById(int id)
。现在的问题是,它getRootView
不是返回布局或 null,而是返回调用该方法的我的 ActionButton。
这是我的 ActionButton,我尝试在其中获取参考:
public class ActionButton extends Button {
protected void onFinishInflate(){
super.onFinishInflate();
log(getRootView() == this) //true, what I don't understand...
ConnectionLayer connectionLayer = (ConnectionLayer) findViewById(R.id.connection_layer); //Returns null...
}
}
以及我的 layout.xml 文件的概述:
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
(much more xml elements)
<com.cae.design.reaction.ui.ActionButton
android:id="@+id/actionButton"
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_gravity="center_vertical" />
</LinearLayout>
<com.cae.design.reaction.ui.ConnectionLayer
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/connection_layer"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</com.cae.design.reaction.ui.ConnectionLayer>
</FrameLayout>
如果您能向我解释为什么getRootView
返回视图本身,或者能给我一个提示,我将如何以其他方式引用它,我将不胜感激。