因此,我在這裏看到了幾個帖子,這些帖子暗示了獲取Android中任何子視圖的父視圖的id的最佳解決方案是之類的:Android - 獲取活動/片段中的父視圖的ID
View parent = (View)child.getParent();
int id = parent.getId();
不幸的是,這在我的情況下不起作用。我有一個自定義ViewGroup(擴展FrameLayout)與2個按鈕,一個textView和一個酒吧,需要按鈕點擊更新。
class WaveControl extends FrameLayout{
Button minus;
Button plus;
ExpandingBar bar; //simple view that only draws a color(need for indication purposes)
int counter;
}
擴展欄需要按鈕點擊動畫,我有方法,照顧在WaveControl內。我也有一個有五個WaveControls的片段,我需要在片段中實現一個onClickListener,以根據哪個WaveControl被點擊/更新來應用濾鏡。但即使我實現上述代碼,我得到不同的ID,即在:
WaveControl wc1; // (in xml id is field_1)
WaveControl wc2; // (in xml if is field_2)
WaveControl wc3; //...
WaveControl wc4; //...
wc1.minus.setOnclickListener(this);
wc2.plus.setOnclickListener(this);
.... //this for every button
@Override
public void OnClick(View v){
View parent = (View)v.getParent();
int id = parent.getId();
Log.i(TAG, "view id: "+ id +" wc1 id: " + field1.getId());
switch(v.getId()){
case R.id.minus:
...
}
}
輸出是:I/WaveFragment﹕ view id: -1 wc1 id: 2131624083
顯然,這不能成爲我當這是被點擊視圖的指標。 我已經想出了一個解決方法,爲每個waveControl字段創建幾個onClickListeners,但它看起來並不像完美的解決方案。 仍然存在這樣的問題:將ViewParent投射到視圖將不會獲得放置在片段中的視圖的實際ID。任何提示爲什麼發生這種情況將不勝感激。 謝謝
我想我沒有正確地解釋它。我需要查看哪個按鈕的父級,因爲不同的waveControls會更改信號的不同部分。從這個意義上說,我可以很容易地區分正負,但我不能說出誰是父母。至少沒有一個onclicklistener。 – zelle
@zelle我編輯了我的答案。 –