2013-02-22 14 views
6

Przepraszamy, ale nie mogę znaleźć odpowiedzi od Google i Stackoverflow. Po prostu zacznę uczyć się dla Androida, chcę zbudować dobrą bazę wiedzy Android. Zastanawiam się, które powinienem użyć w następujących przypadkach, jeśli utworzyć fragment toast.maketext. getActivity() lub getAcitivity(). getApplicationContext()?Toast in Fragment, należy użyć funkcji getActivity() lub getAcitivity(). GetApplicationContext()?

Próbowałem obu, to działa dobrze ..

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

wierzę rzeczy UI byś zazwyczaj używać kontekstu aktywności. –

Odpowiedz

10

Dla interfejsu użytkownika związane połączeń wykorzystać kontekst aktywny.

Zobacz to wyjaśnienie Reto Meier: https://stackoverflow.com/a/987503/534471

+0

więc użyj getActivity() zamiast getAcitivity(). GetApplicationContext(), aby uniknąć wycieków pamięci? czy mam rację? popraw mnie ~ – NaiveBz

+2

Nie. Jako regułę zawsze używaj kontekstu Aktywności, gdy tylko jesteś w zakresie działania. Użyj kontekstu aplikacji, gdy opuszczasz zakres działania. Jestem świadomy, że ta odpowiedź może być myląca, ale pytanie nie ma jasnej odpowiedzi i zależy od okoliczności. W niektórych przypadkach musisz użyć kontekstu działania lub otrzymasz wyjątki, w innych powinieneś użyć kontekstu aplikacji, aby uniknąć przeciekania kontekstu działania. Zakładam, że twój kod znajduje się w ramach działania? Jeśli tak, użyj kontekstu działania. Jeśli nie, opublikuj więcej kodu. –

+0

Dzięki za szybką odpowiedź. erm, jak tylko wziąć pod uwagę w ramach działania lub pozostawić zakres działania? toast jest tworzony wewnątrz funkcji Class onCreateView fragmentu. czy to jest poza zakresem działania? – NaiveBz

Powiązane problemy