2012-01-16 11 views
5

Benim soyut sınıf uzattı.Görünümü Değiştir içeriği dinamik

onCreate()'u geçersiz kılmak için bunu genişleten Activity s'yi istiyorum ve event_content View kalan sınırları değişmez olarak tanımlayın.

böyle Örneğin

:

abstract public class MyActivity extends Activity { 
    protected View mContent; 

    @Override 
    protected onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.common_layout); 
     initializeContent(); 
    } 

    abstract void initializeContent(); 
} 

class OneActivity extends MyActivity { 

    @Override 
    protected void initializeContent() { 
     mContent = View.inflate(this, R.layout.some_view, null); // i.e. concrete View (e.g. LinearLayout, FrameLayout, GridView, etc.) 
    } 
} 

Ama ne zaman yani benim mContent ben MyActivity 'ın onCreate() bunu tanımlarken olduğu gibi aynı kalır.

Görünümün türünü/içeriğini nasıl değiştirebilirim? Activity'un ön planda ne olduğuna bağlı olarak değişir?

+0

Merhaba kullanım yöntemlerini geçersiz kılamaz bazı sabit düzen ve bazı dinamyc ile bir şablon sahip olmaktır. Böyle bir şey varsa, Fragments'ı kullanmanızı tavsiye ederim. –

cevap

7

İlk önce ana düzeninizdeki görünümü bir görünüm grubuna (örneğin, bir LinearLayout) değiştirin. Daha sonra görüntüleyebilirsiniz. Benzersiz bir görünüm eklerseniz, tam olarak elde etmek istediğiniz etkiye sahip olacaktır.

class OneActivity extends MyActivity { 
    @Override 
    protected void initializeContent() { 
     final ViewGroup viewGroup = (ViewGroup) findViewById(R.id.activity_content); 
     viewGroup.addView(View.inflate(this, R.layout.some_view, null)); 
    } 
} 

Sizin durumunuzda çalışması gereken. Özel görünüm grup hiyerarşisinde daha üst düzeylerden başka görünümler içeriyorsa, size özel bir görünüm eklemeden önce onu temizleyebilir:

Çalışıyor
viewGroup.removeAllViews(); 

, benim projelerinin çoğunda tam olarak bunu.

Bir alternatif, SDK'nın en son sürümleri için kullanılabilen Fragments API'a bakmaktır. Sana anlasalardı

+0

Awesome !!! Çok teşekkür ederim))) – teoREtik

+0

Bir ViewGroup kullanmanın bir başka yararı da, düzenini (arka plan, genişlik/yükseklik, vb.) Yalnızca tek bir yerde değiştirebilmeniz ve tüm alt sınıf etkinliklerinizi etkileyecektir. – Guillaume

0

İstediğiniz iyi ne Java sınıf veri üyeleri, yerine