0

何時間も検索して試した後、ここで質問することにしました。

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);

...

私の問題

だから、私の問題は、ヘッダーバーのボタンからの ClickHandler が起動しないことです。ボタンをヘッダーではなく「RootPage」に追加すると、

this.add(b)

、すべてが機能します。

jquery-mobile ヘッダーの実装にあるに違いないと思います。回避策/アイデアはありますか?

ベルリンからありがとう、アレックス

4

2 に答える 2

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 プロジェクトは、これらすべてのウィジェットを自分で作成する手間を省くための良い解決策かもしれません。

于 2012-10-21T18:06:02.640 に答える
0

モバイル アプリを構築するための純粋な GWT ソリューションを確認したい場合は、http: //www.m-gwt.com を参照してください。

于 2012-06-20T17:28:23.307 に答える