2015-11-05 21 views
0

正如你所看到的,我有一個UpdatableViewxml文件中,但是我不能通過findViewById來選擇它。 id以某種方式被刪除,我不知道爲什麼。我打印出視圖層次結構,並且此特定視圖沒有ID。其他人當然有! 可能是什麼問題?我試過清洗,重建,再生R.沒有什麼幫助! enter image description here無法在android中選擇xml id

UPDATE 在我活動的onCreate我擴展FrameLayout

setContentView(R.layout.starter_activity); 
    ButterKnife.bind(this); 

UpdatableView類我這樣做:

public UpdatableView(Context context, AttributeSet attrs, int defStyleAttr) { 
    super(context, attrs, defStyleAttr); 
    inflate(context,R.layout.torob_updatable_layout,this); 
    ButterKnife.bind(this); 
} 

torob_updatable_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> 
+0

發佈您的Java代碼。 –

+0

onCreate試試這段代碼: 查看v = inflate(context,R.layout.torob_updatable_layout,this); ButterKnife.bind(this,v); – quangson91

+0

但是你在哪裏找到你的'UpdatableView'這個代碼? –

回答

0

後困惑小時,我發現我的UpdatableView建設者之一是這樣的:

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

相反,它應該一直是這樣的:

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

耶穌!一定要通過attrs或者你不會得到一個與你的看法。

0

你必須像下面一樣使用。

UpdatableView updateView = (UpdatableView)findViewById(R.id.updatable_view); 
+0

我知道!這會返回null –

+0

然後在這裏發佈你的JAVA代碼。 –

+0

我更新了我的問題 –