2016-04-11 6 views
0

Wenn Sie die Ansicht mehrmals ändern, wird manchmal eine neue Ansicht in der Viewfactory erstellt. (Ich bin mit Nachbrenner btw, aber das sollte nicht das Problem sein) Diese auf jedem Gerät geschieht (Desktop- und Mobile)Ansicht wird mehrfach mit Gluon erstellt

Der folgende Code ist in der init-Methode

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

Das obige Beispiel produziert mehrere Instanzen der gleichen Ansicht (die einige Presenter von mir bricht)

Eine schnelle Lösung kann unten gesehen werden, sollte aber nicht notwendig sein.

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:
Der View-Wechsel geschieht nach wie vor mit Switchview (String)

Antwort

0

Wenn Sie eines des Gluon überprüfen Mobil samples, oder wenn Sie ein neues Projekt mit der Gluon-Plugin erstellen, werden Sie Beachten Sie, dass die addViewFactory Aufrufe nur einmal durchgeführt werden, auf der init() Methode, die einmal aufgerufen wird, vor der Application.start() Methode.

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

Unter der Haube, wenn Sie addViewFactory nennen, die View-Instanz wird in einer Karte von Ansichten zwischengespeichert. Dies garantiert Ihnen, dass Sie nicht mehr als die gleiche Ansicht hinzufügen können, und Sie können die Instanz einer bestimmten Ansicht jederzeit abrufen.

So brauchen Sie nicht ein View jedes Mal, wenn Sie von einem früheren umschalten zu erstellen, rufen Sie einfach:

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

schalte ich nach wie vor die Ansicht über diese Methode und der addViewFactory Aufruf ist in der init-Methode. Was ich sagte ist, dass, wenn ich Ansichten mit switchView (String) ändere, der Lieferant mehrmals aufgerufen wird, obwohl ich es nur einmal registriert habe. – LucaZ

+0

Ich kann Ihr Problem nicht reproduzieren. Erstellen Sie einfach ein neues Mehrfachansichtsprojekt mit dem Gluon Plugin, führen Sie es aus und Sie werden sehen, dass Ansichten nur einmal erstellt werden. Ansonsten posten Sie relevanten Code, damit wir das Problem reproduzieren können. –

Verwandte Themen