2016-04-11 23 views
0

ile birden çok kez oluşturulur Birden çok kez Görüntüle'yi değiştirirseniz, bazen Viewfactory'de yeni bir Görünüm oluşturulur. (Masaüstü ve Mobil)Görünüm, Gluon

Aşağıdaki kod init yönteminde

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

Yukarıdaki örnek olduğu bu her cihazda olur (Btw Afterburner kullanıyorum, ama bu Sayı olmamalı) Aynı görüntünün birden çok örneğini üretir (bu, benimkilerin bazı sunucularını kırar)

Aşağıda hızlı bir düzeltme görülebilir, ancak gerekli olmamalıdır.

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

DÜZENLEME:
Görüntüleme değiştirme SwitchView hala olur (String)

cevap

0

mobil gluon samples herhangi kontrol Eğer Gluon eklentisiyle yeni bir proje oluşturursanız, ya, olur addViewFactory çağrıları, Application.start() yönteminden önce bir kez çağrılan init() yönteminde, yalnızca bir kez yapılır dikkat edin. Kaputun altında

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

, sen addViewFactory çağırdığınızda, görünüm örneği görüşlerin bir haritada önbelleğe alınır. Bu, aynı görünümden daha fazlasını ekleyemeyeceğinizi garanti eder ve belirli bir görüntünün örneğini istediğiniz zaman alabilirsiniz.

Yani bir View bir öncekinden geçiş her zaman yaratmak gerek yoktur, sadece çağrı:

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

hala bu yöntemle görünümü geçiş ve addViewFactory çağrı başlatma yönteminde olduğunu. Dediklerim, SwitchView (String) ile Görünümler'i değiştirdiğimde, sadece bir kez kaydettiğim halde tedarikçi defalarca çağrılıyor. – LucaZ

+0

Sorununuzu yeniden oluşturamıyorum. Gluon Eklentisi ile yeni bir çoklu görünüm projesi oluşturun, çalıştırın ve görünümlerin yalnızca bir kez oluşturulduğunu göreceksiniz. Aksi takdirde ilgili kodu yazarak sorunu yeniden oluşturabiliriz. –

İlgili konular