2009-11-29 8 views
11

kalmadan Android'in sistem tercihlerini alma, Bir sınıfa bir sistem tercih değeri elde etmek istiyorum, ama orada bağlamı yok çünkü sahip olmadığı çağıran sınıf bağlam da. Kaynaklar için statik Resources.getSystem() işlevini kullanabileceğimi buldum. Bağlamsız sistem tercihleri ​​almak için benzer bir yol var mı?bir Android yarar sınıfında herhangi bağlam

Benim sınıf bir faaliyet ne de hizmet değildir. Bu bir yardımcı program sınıfı. Gerekirse daha fazla bilgi verebilir.

+0

, şimdi siz aynı durumdayım. Nihayet karar verdiğinize biraz ışık tutalım mı? – camperdave

cevap

7

Bir Bağlam göndermelisiniz - sorumluluklarınızdan kaçmayı denemeyin. :) Hizmet sınıfınız bir Etkinlik veya Hizmet tarafından bir düzeyde çağrılmalı ve bu bağlamı tüm yöntem çağrısı boyunca satırın sonuna kadar geçireceksiniz. Bunun sinir bozucu olduğunu biliyorum, kendime benzer şeyler yapmak zorunda kaldım. Kodunuzu basit tutmaya ve başarılı bir şey elde etmek için mümkün olduğunca az sayıda yöntem çağrısına ihtiyaç duymaya teşvik etmeyi düşünün.

+0

Hayır, tembellikle ilgili değil. Tüm Android'i özelleştiriyorum ve bu sınıf, içeriğe sahip olmayan dahili bir Android sınıfı tarafından çağrılıyor. – Mostafa

+6

Öyleyse Tercihler bilgiyi saklamak için kullanmak istemiyor. Tercihler uygulamalar/aktiviteler için kapsamlıdır. Bilgileri diskte saklayın. – Konklone

+0

Teşekkürler. Bu yardımcı olabilir. Kontrol etmeliyim. – Mostafa

-1

aşağıdaki Hack kullanın:

http://www.hasemanonmobile.com/2009/10/05/quick-and-very-dirty-android-development-trick/ Esasen sizin Aktivite içindeki statik değişken olarak bir bağlam işaretçi kapalı saklamak. Sıkışık bir tarihte iseniz bu çirkin kesmek tavsiye ederim. Ayrıca, bir yardımcı program sınıfı yazıyorsanız, çağıran uygulamanın, yapıcınızın bir parçası olarak size bir bağlam sağlamasının gerekip gerekmediğini (çoğu Android uygulamasının gerektirdiği) gerekir.

+0

Bunun bir link rot olduğunu düşünün :) – t0mm13b

-3

Bir bağlam oluşturabilirsiniz: meraktan

Context myContext = createPackageContext("com.example", 0); 
+4

Lütfen bu cevabı reddettiğinizde yorum ekleyin. Bu yüzden bunun neden iyi bir çözüm olmadığını öğrenebiliriz. – kuester2000

+3

'createPackageContext()' 'Bağlamda statik olmayan bir yöntemdir, bu nedenle onu çağırmak için zaten bir' Bağlam'a sahip olmanız gerekir. Onun meselesi, tek yapmanız gereken, sistem kaynaklarına erişim sağlamak istiyorsanız, her yerde bir bağlam nesnesini geçirmenizi istemediğidir. –

İlgili konular