1
我已經很困惑了幾天了。ImageButton OnClickListener沒有被解僱
幾天前,我開始嘗試擴展TableLayout視圖以使其可摺疊。聽起來很直截了當。
問題:
protected void onFinishInflate()
{
super.onFinishInflate();
ImageButton ib = (ImageButton) this.findViewById(R.id.collapse);
// totally gayed
ib.setOnClickListener(this.onButtonClick(ib));
}
//works
public OnClickListener onButtonClick(ImageButton ib) {
try {
if (this.collapsed)
{
this.Build();
ib.setImageResource(android.R.drawable.arrow_up_float);
} else {
this.Collapse();
ib.setImageResource(android.R.drawable.arrow_down_float);
}
} catch (Exception e) {
Log.e("MTK", e.toString() + " : " + e.getMessage() + " : " + e.getCause());
}
return null;
}
所以有趣的是,該表將與去除了頭中的所有行打開。 onClick方法在視圖實例化時觸發(好的..?)。
但之後我什麼也沒有得到,我真的不知道問題是什麼。我嘗試了很多東西。
解決方案:
public View.OnClickListener onButtonClick(final CollapsibleTableLayout tbl, final ImageButton ib) {
return new View.OnClickListener() {
public void onClick(View v) {
try {
if (tbl.collapsed == true)
{
tbl.Build();
tbl.collapsed = false;
ib.setImageResource(android.R.drawable.arrow_up_float);
} else {
tbl.Collapse();
tbl.collapsed = true;
ib.setImageResource(android.R.drawable.arrow_down_float);
}
} catch (Exception e) {
Log.e("MTK", e.toString() + " : " + e.getMessage() + " : " + e.getCause());
}
}
};
}
原來我不返回單擊處理程序。習慣於他們在其他語言中工作有點不同。
我想如果我這樣做了,我wouldnt能夠修改我正在工作的類,但你只需要通過最終引用到點擊處理程序。
希望這可以幫助別人
哦..是的。這就說得通了。但是如果我返回一種方法,那麼它會使我離開我正在努力工作的課程。我該如何解決這個問題? –
我做了它的工作。謝謝! –