2016-05-17 17 views
-3

Ich fange einfach an Android zu lernen. Ich weiß Android ist das Open-Source-Betriebssystem. Ich benutze Android Studio für die Entwicklung der Software. Ich kenne die Funktion findViewById. Ich möchte die Implementierung dieser Funktion kennen. Ich sehe nur unten. Könnten Sie mir bitte helfen zu zeigen, wo ich die Implementierung dieser Funktion in Android Studio sehen kann? @Nullable public abstract Ansicht findViewById (@IdRes int id); Vielen Dank.Was ist die Implementierung der Funktion findViewById in Android

+0

[da sind Sie] (http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.0_r1/android/view/View.java#View. findViewById% 28int% 29) – Blackbelt

+1

@Blackbelt nicht vergessen, dass diese Implementierung Viewgroup überschreibt http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.0_r1/android /view/ViewGroup.java#1629 – Budius

+2

Hinweis für die Zukunft: Halten Sie STRG gedrückt und klicken Sie auf die Methode, die Sie weiter untersuchen möchten. Gleiches gilt für Variablen, Klassen usw. – Vucko

Antwort

0

Meine Vermutung ist, dass jede Ansicht eine ID hat, also gehst du einfach alle durch, bis sie eine Übereinstimmung findet.

Allerdings habe ich nur in der Lage gewesen, dies zu verfolgen:

Activity.java

2071 public View findViewById(int id) { 
2072  return getWindow().findViewById(id); 
2073 } 

Window.java

989 public View findViewById(int id) { 
990 return getDecorView().findViewById(id); 
991 } 

View.java

17067 public final View findViewById(int id) { 
17068  if (id < 0) { 
17069   return null; 
17070  } 
17071  return findViewTraversal(id); 
17072 } 

View.java

17028 protected View findViewTraversal(int id) { 
17029  if (id == mID) { 
17030   return this; 
17031  } 
17032  return null; 
17033 } 

Sieht aus wie jede Ansicht eine ID hat (mID), aber die Verfolgung mich nicht führen zu einer Looping. Vielleicht habe ich etwas verpasst, dieser Computer brauchte 10 Minuten, um durch die Seiten zu gehen, also werde ich wieder nach Hause schauen. Vielleicht kann jemand das für uns klären.