2013-02-22 22 views
6

Yeni başlayanlar için üzgünüm Soru, sadece google ve stackoverflow cevabını bulamıyorum .. Sadece android için öğrenmeye başladım, dilek android bilgisi için iyi bir temel oluşturabilir. Parça halinde toast.maketext oluşturuyorsam, hangisini kullanmam gerektiğini merak ediyorum. getActivity() veya getAcitivity(). getApplicationContext()? ı hem çalıştımFragman Fragment, getActivity() veya getAcitivity(). GetApplicationContext() kullanılmalıdır?

, bu ilgili aramalar Etkinlik bağlamını kullanacağı arayüz için

btn1.setOnClickListener(new View.OnClickListener() {    
@Override 
public void onClick(View v) { 
Toast.makeText(getActivity(), "hello",Toast.LENGTH_LONG).show(); 
Toast.makeText(getActivity().getApplicationContext(),"Hello",Toast.LENGTH_LONG).show(); 
} 
}); 
+0

:

Reto Meier tarafından bu açıklamaya bakın. –

cevap

10

.. iyi çalışıyor. Ben UI şeyler için genellikle Etkinlik Bağlam kullanmak istiyorsunuz inanıyoruz https://stackoverflow.com/a/987503/534471

+0

, dolayısıyla bellek sızıntılarını önlemek için getAcitivity(). GetApplicationContext() yerine getActivity() kullanın? haklı mıyım lütfen düzeltin ~ – NaiveBz

+2

No. Genel bir kural olarak, bir Etkinlik kapsamında olduğunuzda Etkinlik içeriğini kullanın. Etkinlik kapsamını bıraktığınızda Uygulama içeriğini kullanın. Bu cevabın kafa karıştırıcı olabileceğinin farkındayım, ancak sorunun açık bir cevabı yok ve şartlara çok bağlı. Bazı durumlarda, Etkinlik bağlamını kullanmanız veya istisnalar almanız gerekir; diğerlerinde, Etkinlik içeriğini sızdırmaktan kaçınmak için Uygulama bağlamını kullanmanız gerekir. Kodunuzun bir Etkinlik içinde olduğunu mu varsayıyorum? Evetse, etkinlik bağlamını kullanın. Değilse, lütfen daha fazla kod gönderin. –

+0

Hızlı yanıtınız için teşekkürler. erm, sadece bir faaliyetin kapsamı içinde nasıl değerlendirilir veya Faaliyetin kapsamı nedir? Tost, Class onCreateView işlevi parçasının içinde oluşturulur. Faaliyet kapsamı dışında mıdır? – NaiveBz