2016-05-17 55 views
-3

中的實現我剛開始學習Android。 我知道Android是開源的操作系統。 我使用android studio開發軟件。 我知道函數findViewById。 我想知道這個函數的實現。 我只看到下面。 你可以請幫忙來顯示我可以在android studio中看到這個函數的實現嗎? @Nullable public abstract查看findViewById(@IdRes int id); 非常感謝。什麼是功能findViewById在android

+0

[你在那裏](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別忘了ViewGroup覆蓋了這個實現http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.0_r1/android /view/ViewGroup.java#1629 – Budius

+2

提示未來:按住CTRL並點擊您想要進一步調查的方法。同樣適用於變量,類等。 – Vucko

回答

0

我的猜測是,每個視圖都有一個ID,所以你只需要直到它找到一個匹配。

不過,我只能夠跟蹤這樣的:

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 } 

貌似每個View確實有一個ID(MID ),但跟蹤並沒有導致我任何循環。也許我錯過了一些東西,這臺電腦讓我花了10分鐘去瀏覽頁面,所以我會在回家時再次檢查。也許有人可以爲我們澄清這一點。