2010-07-16 31 views
15

Bir uygulamanın inşası/tasarım aşamasına girdim ve biraz şaşırdım. Esasen bir tabHost/TabActivity nasıl bir başkasının UI içine bir aktivite gömmek için bir yol arıyordum. Ekranın üstünde, diğer aktiviteyi içerecek bir pencere olurdu ve bunun altında, yukarıdaki aktiviteden bağımsız olan ve her zaman görünür olması gereken düğmeler ve kontroller olacaktır. Kullanıcı, aşağıdaki kontrollerde herhangi bir değişikliğe yol açmadan pencerede bir etkinlikten diğerine gidebilecektir.android: Aktiviteleri katıştırmak için ActivityGroup kullanarak

Konuyu incelerken, yararlı olacağını düşündüğüm ActivityGroup ile karşılaştım, ancak bunu nasıl uygularım? Herkes ActivityGroup ile deneyime sahip veya başka bir fikriniz mi var?

cevap

19

Evet, diğer Etkinliklerinizin taşıyıcısı olacak bir ActivityGroup uygulayacaksınız. Kullanıcı düğmelerden birini tıkladığında, LocalActivityManager'a bir referans alırsınız ve bunu başlatmak ve iç aktiviteyi gömmek için kullanabilirsiniz. Böyle bir şey: odak sadece doğru olmadığı sürece, (menü düğmesi gibi) donanım düğmelerine basarak yalnızca yerine ActivityGroup etkinlikleri tetikleyecek çünkü

LocalActivityManager mgr = getLocalActivityManager(); 

Intent i = new Intent(this, SomeActivity.class); 

Window w = mgr.startActivity("unique_per_activity_string", i); 
View wd = w != null ? w.getDecorView() : null; 

if(wd != null) { 
    mSomeContainer.addView(wd); 
} 

Not Bu yöntemi kullanarak, oldukça karmaşık olabilir İç Aktivite. İç aktiviteyi konteynır görünümüne ekledikten sonra odaklanmanın bir yolunu bulmanız gerekir; bu noktada, iç aktivitede dahi bir şey olur ve kap aktivitesine yayılır.

Yapılabilir, yaptım ... ve işe yarıyor. Olması gerektiğini düşündüğümden biraz daha karmaşık.

Neyse,

+0

oh harika ben tabhost kaynak kodunu arıyordum. Bu iyi görünüyor, ama hepsi benim için çok yeni. Kod örneğinizde yaptığınız şey hakkında biraz bilgi vermek ister misiniz? – mtmurdock

+1

startActivity kısmı sadece ekranda gösterilmeden Etkinliği başlatır. Ardından, tüm içeriğe sahip olan ve bunu ActivityGroup öğenizin içinde yer alan bir Görünüm'e ekleyen Görünümü alırsınız. LocalActivityManager, ev düğmesine bastığınızda ve bu – synic

+0

tek bir şeyden daha fazla bir şey çıkardığınızda, iç Mekan Aktivitelerinize, OnOut ve onResume göndermek gibi her şeyi yönetir: bu "pencere" nesnesi nedir ve nasıl uygulanır? Ben sadece bir '' etiketini yerleştirmek istediğim yerleşime koyabilir miyim ve sonra kodu atayabilir miyim? ps teşekkürler, harikasın. – mtmurdock