1. 程式人生 > >我的Android進階之旅------>解決Android Studio全域性搜尋搜不到結果的問題

我的Android進階之旅------>解決Android Studio全域性搜尋搜不到結果的問題

1、問題描述

今天使用Android Studio時,想通過使用快捷鍵Ctrl+Shift+F來進行全域性搜尋指定字串,如下圖所示:想搜尋字串”碼農偷懶了”,
這裡寫圖片描述
開啟string.xml檔案,裡面明明有字串”碼農偷懶了”,但是就是搜尋不到結果,如下圖所示
這裡寫圖片描述

錯誤提示如下所示:

No occurrences of '碼農偷懶了' found in Project with mask '*.xml *.java' Find Options... (Ctrl+Shift+F)

2、問題解決

根據錯誤提示,重新使用快捷鍵Ctrl+Shift+F開啟搜尋面板,並進入【File name filter】選項,去掉【File mask(s)】選單項的勾選。如下圖所示:
這裡寫圖片描述


去掉勾選後,如下圖所示:
這裡寫圖片描述
然後點選【Find】按鈕,就出現了搜尋結果,如下圖所示:
這裡寫圖片描述

這樣通過搜尋字串找到了字串定義的地方,然後就可以找到該字串在其他的地方引用了。
使用快捷鍵Ctrl+Shift+F,搜尋關鍵字”code_undisposed”,如下圖所示:
這裡寫圖片描述
搜尋結果如下所示:
這裡寫圖片描述

當然,此時也可以使用Alt+F7快捷鍵進行搜尋,將滑鼠放在
碼農偷懶了
這一行,然後按Alt+F7快捷鍵,就可以搜尋了,如下圖所示:
這裡寫圖片描述

上面的快捷鍵都是Android Studio預設的快捷鍵,如下所示:
這裡寫圖片描述

有時候,一個很小的疏忽就會導致完全達不到你的要求,很艹蛋!下次注意不要隨意勾選【File mask(s)】選項!

3、自定義搜尋Scope

部落格更新這麼久了,今天有個讀者靈魂顫抖吧 回覆了我,回覆內容如下:

1樓 靈魂顫抖吧 3小時前發表 [回覆]
自定義過濾build下的intermediates和generated資料夾中的所有檔案:
Options(Tab)- Scope - Custom(勾選) - 右側三個點(點選)-
加號(點選)– local – 過濾內容:!file:intermediates/&&!file:generated/

這裡寫圖片描述

讓我通過該回復,又學會了一項新技能:【自定義搜尋Scope】

按照上面的方法,使用下面幾步,即可實現自定義搜尋Scope.

  • 第一步:在Android Studio 中,使用快捷鍵【Ctrl+Shift+F】開啟搜尋框,如下所示:

這裡寫圖片描述

  • 第二步:在【Scope】區域,選擇【Custom】選項,然後點選右側的【…】按鈕,如下所示:

這裡寫圖片描述

點選完後,彈出如下所示的彈框

這裡寫圖片描述

  • 第三步:點選【+】按鈕,在【Add scope】中選擇【Local】
    這裡寫圖片描述

然後填寫名稱為自定義的【ExcludeIntermediates】,如下所示:
這裡寫圖片描述

點選【OK】按鈕,然後彈出如下所示的框,

這裡寫圖片描述

  • 第四步:在【Pattern】文字框中,我們要填寫自定義的過濾規則,然後點選【OK】按鈕儲存。

例如,我們填寫規則

!file:*intermediates*/&&!file:*generated*/

這裡寫圖片描述

定義該規則後,imtermediates目錄以及generated目錄下的檔案將不被搜尋。

這裡寫圖片描述

如下圖所示,使用自定義的Scope之後,搜尋build\intermediates\manifest\androidTest\debug\AndroidManifest.xml檔案中的字串“ Tests for com.xtc.watch” 搜尋不到了

這裡寫圖片描述

將Scope改為原來的【Whole project】即可搜尋的到,如下所示:

這裡寫圖片描述

這裡寫圖片描述

4、更多自定義搜尋Scope規則

學會了上面的基本規則之後,你想怎麼定義Scope規則都可以,下面介紹一個其他人定義的規則,如下所示:

這裡寫圖片描述

規則程式碼如下

!file:*intermediates*/&&!file:*generated*/&&file:*java&&!file:R.java&&!file:*_.java||file:*strings.xml||file:*dimes.xml||file:*styles.xml||file:*attrs.xml||file:*colors.xml||file:*layout/*xml&&!file:*build/*xml

該規則,

  • 忽略R.java檔案
  • 忽略所有的通過 Android Annotations生成的java檔案 (i.e. *_.java files)
  • 包含strings.xml, dimens.xml, styles.xml, attrs.xml, colors.xml files
  • 包含所有的layout/* path 目錄下的xml檔案

參考連結

這裡寫圖片描述

如果本文對您有所幫助,歡迎您掃碼下圖所示的支付寶和微信支付二維碼對本文進行打賞。

這裡寫圖片描述