2011-11-21 17 views
6

bir ArrayAdapter gelen.: Ben bazı kaynaklar tanımlanmış olan Android

<color name="lightGrey">#FFCCCCCC</color> 
<integer name="KEY_POSITION_ARM">2</integer> 

örn kaynaklarına erişimi alınıyor ... ve ben TextView'lar öğeleri görüntüleyen bir ArrayAdapter var. "Tipi ContinuityAdapter için tanımlanmamıştır) yöntemi GetResources ("

keyPosition = getResources().getInteger(R.integer.KEY_POSITION_ARM); 
moduleDataView.setTextColor(getResources().getColor(R.color.darkgreen)); 

... ama böyle hatalar alıyorum: Ben gibi koduyla değerlere erişmeye çalışıyorum. (ContinuityAdapter, ArrayAdapter'i genişletir)

Bunun için iyi bir yol var mı?

Teşekkür

Bu bir örnektir:

switch (currentModule.keyPosition) { 
case activity.getResources().getInteger(R.integer.KEY_POSITION_ARM): 
    moduleDataView.keyPosition.setText("TEST"); 
    moduleDataView.keyPosition.setTextColor(Color.GREEN); 
    break; 
case R.integer.KEY_POSITION_ARM: 
    moduleDataView.keyPosition.setText("ARM"); 
    moduleDataView.keyPosition.setTextColor(Color.RED); 
    break; 
} 

ilk dava bir hata verir ve ikinci yapmaz ama her iki XML dosyasından değeri kullanmaz. Söylediğim gibi, R ... değerini her yerde kullandığım sürece kullanabilirim. Bunun 'en iyi uygulama' olarak kabul edilip edilmediğinden emin değilsiniz. Teşekkürler

cevap

17

Context.getResources() yöntemini çağırmak için Context nesnesine ihtiyacınız var. Genellikle bir Bağlamı veya alt sınıfını (yani Etkinlik) özel bağdaştırıcınızın yapıcısını kullanarak geçirebilirsiniz.

gibi: o zaman

public ContinuityAdapter extends ArrayAdapter { 
    private final Context mContext; 
    ... 
    public ContinuityAdapter(Context context) { 
     mContext = context; 
    } 
} 

ve kullanımı:

mContext.getResources()... 

Düzenleme: Bu anahtarını önlemek için durum gibi görünüyor. Bkz:

+0

teşekkür ederiz. Denedim ve işe yaramadığını düşündüm, ama şimdi bir hata yapmanın farkına vardım: 'switch (foo) { case activity.getResources(). GetInteger (R.integer.KEY_POSITION_ARM):' Durum bildirimi, kaynak sabit olsa bile, açıkça bir sabit ifade gerektirir. İfadeleri kullanarak mı takılıyorum? – ARQuattr

+0

Daha fazla kod görmem gerekiyor. Genelde anahtar durumlarından kaçınmaya çalıştım ya da kaynak kimliğini doğrudan kullanıyorum (örn., R.id.xyz). – user802421

+0

Soruyu daha iyi bir kod örneği içerecek şekilde düzenledim. Teşekkürler – ARQuattr

İlgili konular