Java 无法在android中使用xml id进行选择

Java 无法在android中使用xml id进行选择,java,android,android-layout,android-activity,Java,Android,Android Layout,Android Activity,正如您所看到的,我在xml文件中有一个可更新视图,其id为updateable_view,但我无法通过findViewById选择它。身份证不知怎么被删除了,我不知道为什么。我打印了视图层次结构,而这个特定视图没有id。其他视图当然有! 有什么问题吗?我试过清理,重建,再生R。没有任何帮助! 更新 在我的活动onCreate中,我这样做 setContentView(R.layout.starter_activity); ButterKnife.bind(this); 在扩展

正如您所看到的,我在xml文件中有一个可更新视图,其id为updateable_view,但我无法通过findViewById选择它。身份证不知怎么被删除了,我不知道为什么。我打印了视图层次结构,而这个特定视图没有id。其他视图当然有! 有什么问题吗?我试过清理,重建,再生R。没有任何帮助!

更新 在我的活动onCreate中,我这样做

    setContentView(R.layout.starter_activity);
    ButterKnife.bind(this);
在扩展FrameLayout的UpdateableView类中,我执行以下操作:

public UpdatableView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    inflate(context,R.layout.torob_updatable_layout,this);
    ButterKnife.bind(this);
}
torob_Updateable_layout.xml非常简单:

<?xml version="1.0" encoding="utf-8"?>
<merge
    xmlns:android="http://schemas.android.com/apk/res/android">
<com.rey.material.widget.ProgressView
        android:id="@+id/progress"
        android:visibility="gone"
        android:layout_width="48dp"
        android:layout_height="48dp"
        style="@style/CircleProgressBar"
        android:layout_gravity="center"
        />
<com.rey.material.widget.Button
        android:id="@+id/retry"
        style="@style/Button"
        android:text="تلاش دوباره"
        android:layout_gravity="center"
        android:visibility="gone"
        />
</merge>

你必须像下面这样使用


经过几个小时的困惑,我发现我的一个UpdateableView构造函数是这样的:

public UpdatableView(Context context, AttributeSet attrs) {
    this(context, null, 0);
}
public UpdatableView(Context context, AttributeSet attrs) {
    this(context, attrs, 0);
}
相反,它应该是这样的:

public UpdatableView(Context context, AttributeSet attrs) {
    this(context, null, 0);
}
public UpdatableView(Context context, AttributeSet attrs) {
    this(context, attrs, 0);
}

天哪!请确保传递属性,否则您的视图将无法获得id。

发布您的Java代码。在onCreate中,请尝试以下代码:view v=inflatecontext,R.layout.torob\u updateable\u layout,this;巴特诺夫,这个,v;但是在这段代码中你在哪里找到了你的UpdateableView?在活动中我有@BindR.id.Updateable\u view UpdateableView UpdateableView;但是不工作,因为没有名为Updateable_view的id非常奇怪,非常奇怪。我知道!这将返回null我认为在onCreate中尝试以下代码:View v=inflatecontext,R.layout.torob\u updateable\u layout,this;巴特诺夫,这个,v;有关更多详细信息,您可以签入:在会话非活动绑定中,我认为问题不在于ButterKnife,因为findViewById返回null。正如你提到的,我尝试了其他膨胀方法,但仍然是一样的,特定视图没有id。@quangson91你可以尝试一下:用另一种布局替换in布局,如FrameLayout,LinearLayout@莫赫马