我有一个活动,上面有一个按钮:
<Button
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_alignParentTop="true"
android:id="@+id/some_id" />
我可以从活动的来源中找到它:
button = (Button)findViewById(R.id.some_id); // returns the button
但如果我切换自定义控件的按钮:
<FancyButton
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_alignParentTop="true"
android:id="@+id/some_id" />
然后我开始变为null:
fancyButton = (FancyButton)findViewById(R.id.some_id); // returns null
目前,花式按钮实际上只是一个空视图,所以我不确定是什么原因会导致它失败:
public FancyButton(Context context, AttributeSet attrs) {
super(context);
LayoutInflater.from(context).inflate(R.layout.fancy_button, this, true);
}
我绝对错过了一些明显的东西。
答案 0 :(得分:1)
我忘了将attributes参数转发给基础构造函数。由于id是一个属性,它最终会掉落在地板上而不是设置。
错:
public FancyButton(Context context, AttributeSet attrs) {
super(context);
右:
public FancyButton(Context context, AttributeSet attrs) {
super(context, attrs);
启用&#34;未使用的参数&#34;警告可以更快地抓住这个。