JqmHeader.java
public class JqmHeader extends ComplexPanel {
public JqmHeader() {
setElement(DOM.createDiv());
getElement().setAttribute("data-role", "header");
}
public void add(Widget widget) {
super.add(widget, getElement());
}
}
JqmPage.java
public class JqmPage extends ComplexPanel {
...
public JqmPage(String id) {
setElement(Document.get().createDivElement());
getElement().setAttribute("data-role", "page");
getElement().setAttribute("data-url", id);
RootPanel.get().add(page);
render(page.getId());
}
private native void render(String id) /*-{
$wnd.$("#" + id).page();
}-*/;
...
}
MyPage.java扩展了JqmPage.java
...
JqmHeader header = new JqmHeader();
Button b = new Button("TestButton");
b.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
Window.alert("TestButton clicked");
}
});
header.add(b);
this.add(header);
...
我的问题
所以,我的问题是,标题栏中Button的ClickHandler不会触发。如果我不将Button添加到标题,而是添加到“RootPage”,如
this.add(b)
,一切正常。
我认为它必须在于jquery-mobile头实现。有没有解决方法/想法?
感谢柏林, 亚历
答案 0 :(得分:0)
如果您想了解用于构建移动应用的纯GWT解决方案,您可以查看http://www.m-gwt.com
答案 1 :(得分:0)
JQuery Mobile吞下标头上的事件,因此它们不会传播到GWT。我在为jqm4gwt(https://github.com/sksamuel/jqm4gwt)解决这个问题时所做的是在页面级别上有一个普通的监听器,然后比较事件源。如果它是标题中的按钮,那么我手动触发该按钮上的该事件。
查看https://github.com/sksamuel/jqm4gwt/blob/master/src/main/java/com/sksamuel/jqm4gwt/JQMPage.java
中的bindHeaderEvents此外,jqm4gwt项目可能是一个很好的解决方案,可以让您自己创建所有这些小部件。