论坛首页 移动开发技术论坛

Kuix组件Choice发现一个新的bug

浏览 3160 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-11-16   最后修改:2010-11-16

本来想偷懒,利用choice的选择功能,实现按按钮后打开隐藏的choice的列表,实现选择功能,发现choice在visible=“false”的情况下,打开的鹅列表是无法显示选中项的,而且以后没选择一项,下次打开列表选中的项就会消失,重复操作列表最终会被清空。证实在原版的Kuix类库中出现上述问题,非本人修改出来的bug。

 

<choice id="cmbFilter" visible="false">
		<choiceRadiogroup id="lstFilter" value="PublicDocFlow" onchange="test2(#lstFilter.value)">
			<radiobutton value="1">a</radiobutton>
<radiobutton value="2">b</radiobutton>
<radiobutton value="3">c</radiobutton>
	</choice>
<screenFirstMenu onAction="test">pop up</screenFirstMenu>

测试代码

	public boolean onMessage(Object identifier, Object[] arguments) {
		if("test".equals(identifier)){
	    		Choice obj = (Choice)screen.getWidget("cmbFilter");
	    		obj.processActionEvent();
		}
		return false;
	}

如果visible="true"则完全没有上述问题。

//***************************************************

    问题解决,choice有一个choiceContainer的子panel,作用不是很明确,似乎是用来存放选中的radiobutton的,当choice不可见时,不会触发其dolayout方法,而dolayout中会把choiceContainer中的选中项“放回”选择窗口中,所以导致弹出窗口看不到选中项,多次选中后全部radiobutton都放入了choiceContainer,却没有办法从choiceContainer拿回。这算是choice的一个bug。

    实际上对于choiceContainer的作用我还弄不清楚,虽然提供了getChoiceContainer(),但是其它单元中并没有见到调用这个方法的,它似乎是用来临时存放选中项的,但是又看不出它有什么确切的作用,或许去掉它是更好的选择。

 

论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics