5
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) 

sagen, wenn wirGibt es einen Unterschied zwischen getContext of Fragment und getContext des Containers, der an onCreateView of Fragment übergeben wurde?

fragment.getContext() und container.getContext werden wir gleiches Ergebnis zu erhalten, die Host-Aktivität nennen?

Auch gibt view.getContext() immer Activitycontext zurück oder kann es eine andere Art von context zurückgeben?

Antwort

2

Aktivitätsklasse in android erweitert die Kontextklasse. Im Grunde ist eine Aktivität ein Kontext. Ein Kontext darf jedoch keine Aktivität sein.

fragment.getContext() gibt den Kontext des Containers zurück, an den es angehängt ist. Also ja container.getContext() wird die gleichen Ergebnisse wie von fragment.getContext() dh die Host-Aktivität haben.

Wenn eine Instanz der ViewGroup erstellt wird, wird der Kontext für den Inflate-Durchlauf dieser Aktivität angezeigt. Mittel container.getContext() wird denselben Kontext zurückgeben.

fragment.getActivity() wird eine Aktivität zurückgeben, mit der es verbunden ist, was wiederum ein Kontext ist. Wenn das Fragment von der Aktivität getrennt wird, wird null zurückgegeben. Und wenn es angefügt wird, gibt es auch getContext()

Und über Ihre letzte Frage, gibt view.getContext() Kontext zurück, in dem es ausgeführt wird. Die View erweitert die Context-Klasse nicht, wenn sie erstellt wird, benötigen sie ein Kontextobjekt als Parameter. Wenn Sie also eine Ansicht in einer Aktivität erstellen, müssen Sie den Kontext übergeben. Und wenn Sie view.getContext() aufrufen, erhalten Sie den gleichen Kontext zurück, den Sie bei der Erstellung übergeben haben.

+0

so können wir 'Anwendungskontext' übergeben, um während seiner Erstellung anzuzeigen? – q126y

+0

können Sie 'getContext()' oder 'getActivity(). GetApplicationContext()' übergeben, wenn Sie Ansichten in Ihrer App erstellen. Normalerweise werden Ansichten jedoch in XML erstellt und der Rest wird inflationiert. –

+0

"Also wird container.getContext() ja die gleichen Ergebnisse wie fragment.getContext() haben, dh die Host-Aktivität." Aber wenn 'container' mit' Anwendungskontext' aufgebläht wurde, hätten wir einen anderen Kontext für 'fragment.getcontext()' und 'container.getContext'. – q126y