作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经阅读了与此相关的所有其他问题,大多数答案都涉及所有 View ,并且问题通常与所有 View 有关,但是如果我在代码中的同一位置为内置 View 调用 findviewbyid,它返回 View ,但如果我为自定义 View 调用它,它只会返回 null。两个 View 都在同一个地方,在同一个布局中,有 ID,它们是布局 xml 文件中的副本。我正确地覆盖了 customView 在每个构造函数中调用 super(...) 的所有构造函数。我在 setContentView
之后并在 Activity 类中调用 findViewById。
我的问题是,除了覆盖构造函数之外,还需要对自定义 View 做些什么才能让函数 findViewByID 找到它?一定是少了什么。
protected void initClickCounter() {
numberClicks = new DigitViewGroup(this);
ImageDigitView v1;
ImageView v2;
v1 = (ImageDigitView) findViewById(R.id.imageViewDigit1);
v2 = (ImageView) findViewById(R.id.imageViewDigit1_2);
v1 始终为 null,而 v2 永远不会为 null。
<com.bilowik.debugg.ImageDigitView
android:id="@+id/imageViewDigit1"
android:layout_width="10dp"
android:layout_height="14dp"
android:layout_gravity="bottom"
android:layout_marginBottom="60dp"
android:layout_marginStart="103dp"
android:contentDescription="@string/digit1"
app:srcCompat="@drawable/digit_0" />
<ImageView
android:id="@+id/imageViewDigit1_2"
android:layout_width="10dp"
android:layout_height="14dp"
android:layout_gravity="bottom"
android:layout_marginBottom="60dp"
android:layout_marginStart="103dp"
android:contentDescription="@string/digit1"
app:srcCompat="@drawable/digit_0" />
除了 ID 之外,它们完全相同。
public ImageDigitView(Context context) {
super(context);
init(context);
}
public ImageDigitView(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
init(context);
}
public ImageDigitView(Context context, AttributeSet attributeSet, int defStyle) {
super(context, attributeSet, defStyle);
init(context);
}
ImageDigitView 类的构造函数。
最佳答案
使用像这样的例子:
View yourviewname = inflater.inflate(R.layout.yourlayout, container, false);
Button expandableButton = (Button)yourviewname.findViewById(R.id.expandableButton1);
关于安卓工作室 : findViewId not working with custom views,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42933307/
我已经阅读了与此相关的所有其他问题,大多数答案都涉及所有 View ,并且问题通常与所有 View 有关,但是如果我在代码中的同一位置为内置 View 调用 findviewbyid,它返回 View
我是一名优秀的程序员,十分优秀!