2016-04-11 1 views
0

ビューを複数回変更すると、新しいビューがViewfactoryで作成されることがあります。これは、すべてのデバイス(デスクトップおよびモバイル)で発生 Gluonでビューを複数回作成する

を(私がところでアフターバーナーを使用しているが、それは問題ではありません)次のコードは、initメソッド

addViewFactory(viewname,() -> { 
    return new ExampleView(); 
}) 

上記例であります同じビューの複数のインスタンスを生成します(一部のプレゼンターが壊れます)

以下は簡単な修正ですが、必要はありません。

ExampleView view = null; 
addViewFactory(viewname,() -> { 
    if (view == null) { 
     view = (View) new ExampleView.getView(); 
    }else{ 
     //comment out the line below to see that this is really happening 
     //throw new RuntimeException("Created View multiple times"); 
    } 
    return view; 
}); 

EDIT:
あなたはグルーオンモバイルsamplesのいずれかをチェックすると表示を変えるにはのSwitchView(String)を

答えて

0

でまだ起こる、またはあなたがグルーオンプラグインを使用して新しいプロジェクトを作成する場合、必要になりますaddViewFactoryコールは、Application.start()メソッドの前に1回だけ呼び出されるinit()メソッドで1回だけ実行されます。ボンネットの下に

@Override 
public void init() { 
    addViewFactory(PRIMARY_VIEW,() -> new PrimaryView(PRIMARY_VIEW)); 
    addViewFactory(SECONDARY_VIEW,() -> new SecondaryView(SECONDARY_VIEW)); 
}  

、あなたがaddViewFactoryを呼び出すときに、ビューのインスタンスは、ビューのマップにキャッシュされます。これにより、同じビューを複数回追加することはできず、いつでも特定のビューのインスタンスを取得できます。

だから、あなただけの呼び出し、あなたが以前のものから切り替えるたびにViewを作成する必要はありません。

MobileApplication.getInstance().switchView(SECONDARY_VIEW); 
+0

を、私はまだこの方法でビューを切り替えるとaddViewFactoryコールがinitメソッドです。 switchView(String)でViewsを切り替えると、一度登録してもサプライヤが複数回呼び出されるということです。 – LucaZ

+0

問題を再現できません。 Gluon Pluginを使って新しい複数のビュープロジェクトを作成して実行すると、ビューが1回だけ作成されます。それ以外の場合は、関連するコードを投稿して問題を再現することができます。 –

関連する問題