0

次の GWT クラスがあります。

public class MyDefaultView extends Composite {
    // Uses UiBinder and just contains all the widgets for this view.
}

public class MyDefaultActivity extends AbstractActivity {
    @Inject
    private MyDefaultView myDefView;

    @Override
    public void start(AcceptsOneWidget panel, EventBus eventBus) {
        panel.setWidget(myDefView);
    }
}

public class MyActivityMapper implements ActivityMapper {
    @Override
    public Activity getActivity(Place place) {
        if(place instanceof MyDefaultPlace)
            return new MyDefaultActivity();
        else
            return null;
    }
}

public class MyAppModule implements EntryPoint {
    @Override
    public void onModuleLoad() {
        // Lots of initialization and wiring...

        // Why do I need this?!?
        MyDefaultView myDefaultView = GWT.create(MyDefaultView.class);
        RootPanel.add(myDefaultView);

        Place myDefaultPlace = GWT.create(MyDefaultPlace.class);

        PlaceHistoryHandler historyHandler = getHistoryHandler();
        historyHandler.register(myPlaceController, myEventBus, myDefaultPlace);
        historyHandler.handleCurrentHistory();
    }
}
  1. モジュールのロード時に呼び出して表示するだけなのに、なぜ に追加MyDefaultViewする必要があるのですか?RootPanelPlaceHistoryHandler#handleCurrentHistory()MyDefaultView
  2. MyDefaultViewに直接追加すべきではない場合RootPanel、何を追加すればよいですか?

前もって感謝します!

4

1 に答える 1

0

1) を追加する必要はありませんが、アクティビティ マネージャーでそのパネルMyDefaultViewを実装して設定するパネルが必要です。AcceptsOneWidgetこれにより、ビューが表示されるようになります。

2) ほとんどのアプリケーションでは、常に表示されるアプリケーションの一部があります。たとえば、ユーザー名などを表示する上部のバーです。この種類のパネルは、ルート パネルに追加する必要があります。ビューが表示される位置にあるそのパネルでは、実装するウィジェット/パネルをAcceptsOneWidget使用する必要があります。このウィジェットは、ActivityManager で表示として設定する必要がありますsetDisplaystartそのウィジェットは、アクティビティのメソッドに渡されます。ActivityManager と RootPanel で使用するコードは次のようになります。

final ActivityManager activityManager = new ActivityManager(myActivityMapper, eventBus);

activityManager.setDisplay(rootView.getViewPanel());
Rootpanel.add(rootView);
于 2012-11-17T11:24:27.623 に答える