android預覽界面編譯出錯,Android O預覽findViewById編譯錯誤

我試圖測試Android O Developer Preview的第二階段。 項目創建后,我只是點擊了構建并運行但我沒有任何成功。

Android默認生成的代碼如下:Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

發生編譯錯誤。

Error:(18, 37) error: reference to findViewById is ambiguous both method findViewById(int) in Activity and method findViewById(int) in AppCompatActivity match where T is a type-variable: T extends View declared in method findViewById(int)

幫我! 我該如何解決這個錯誤?

編輯#1

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); }

=>編譯錯誤

錯誤:(18,27)錯誤:對findViewById的引用不明確,Activity中的方法findViewById(int)和AppCompatActivity中的方法findViewById(int)匹配,其中T是typesvariables:T extends在方法findViewById(int)中聲明的View

這不是鑄造問題。

我的build.gradle就在這里。

apply plugin: 'com.android.application' android { compileSdkVersion 'android-O' buildToolsVersion "26.0.0-rc2" defaultConfig { applicationId "com.example.app" minSdkVersion 16 targetSdkVersion 'O' versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:26.0.0-beta1' testCompile 'junit:junit:4.12' compile 'com.android.support.constraint:constraint-layout:1.0.2' compile 'com.android.support:design:26.0.0-beta1' }

我嘗試了Android Oreo Developer Preview 2.并使用Android Studio 3.0 Canary版。

你的build.gradle看起來不錯,但是編譯器似乎仍然需要使用supportLib 26來編譯舊的compileSdkVersion (25或更低版本)。

嘗試同步gradle和Build- > Clean Project 。 如果這沒有幫助, File-> Invalidate Cache / Restart應該做的事情……

findViewById的方法簽名隨著API級別25的引入而改變,以支持generics并刪除丑陋的轉換:

新方法簽名:

public T findViewById (int id);

與舊的相比:

public View findViewById(int id);

因此,將您的代碼更改為:

Toolbar toolbar = findViewById(R.id.toolbar);

參考: 查看| Android開發人員

當我的compileSdkVersion為27并且buildToolsVersion不是27時,我遇到了同樣的問題。將它們更改為compileSdkVersion 27 buildToolsVersion“27.0.0”我認為當buildToolsVersion比compileSdkVersion更舊時會發生這種情況。

我相信他們改變了findViewById的方法簽名,這樣你就不再需要強制轉換了。 嘗試將該行代碼更改為

Toolbar toolbar = findViewById(R.id.toolbar);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453243.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453243.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453243.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

中斷與異常的區別

中斷: 中斷是CPU(硬件)所具備的功能 ,它是指系統停止當前正在運行的程序而轉向其他服務,可能是因 為優先級高的請求服務了,或者是因為人為安排中斷。中斷是屬于正常現象。主要由CPU以外的事件引起的 中斷…

寒武紀找到了引領中國AI芯片走向世界的路

大約6億年前在地質學上被稱作“寒武紀”的時代,大量無脊椎動物在短時間內出現“生命大爆發”。如今,“寒武紀”這個名字再次被人們提及,它源自中科院計算所研發的人工智能芯片處理器的命名,意喻人工智能即將迎來大爆發的時代。“寒…

淺談PPM (Project Portfolio Management)

前言: 本文以純理論性的PPM講解為主,不會涉及到具體如何實施,我會在以后介紹詳細的PPM實施方案介紹。 PPM,可能很多人并不清楚甚至可能沒聽說過,這是一個近些年才流行起來的概念,是Project Portfolio Mana…

poj 3071 Football

http://poj.org/problem?id3071 2^n 支足球隊比賽,共比n場,第一場1號與2號比,3號與4號比…… 每場勝出者進入下一場,輸者淘汰 每一場都是相鄰的兩個隊伍比拼 已知任意兩個隊伍比拼獲勝的概率 求最后哪只隊伍獲勝的概率最大 dp[i]…

進程調度與作業調度

進程調度是真正讓某個就緒狀態的進程到處理機上運行,而作業調度只是使作業具有了競爭處理機的機會。進程調度(又稱微觀調度、低級調度、短程調度): 是按照某種調度算法從就緒狀態的進程中選擇一個進程到處理機上運行。負責進程調…

tensorflow源碼安裝

主要參考:https://www.tensorflow.org/install/install_sources#ConfigureInstallation卸載tensorflow sudo pip uninstall tensorflow 安裝git 安裝git時記得先安裝,后更新系統 sudo apt install git安裝jdk8: myubuntu:~$ java myubun…

Makefile學習之通配符和自動變量

規則中的通配符 “*” ,“?” ,“ [...]”, " % " , " wildcard " 1.“*” *.c表示所有后綴為.C的文件; 如果文件中用到通配符,使用“\*”; 2.通配符在變量中的使用; objects*.c 注意…

英語中十二個月名稱的由來

轉自網絡,原出處不詳。 公歷一年有12個月,但不少人并不知道12 個月的英語名稱的來歷。公歷起源于古羅馬歷法。羅馬的英語原來只有10 個月,古羅馬皇帝決定增加兩個月放在年尾,后來朱里斯*凱撒大帝把這兩個月移到年初,…

進程和程序的關系

1 進程是一個動態概念,而程序是一個靜態概念。 2 進程具有并行特征,程序沒有。 3 進程是競爭資源的基本單位。 4 一個程序對應多個進程,一個進程為多個程序服務。

Android怎么插手機卡,魅藍E手機卡怎么裝 魅藍E手機SIM卡安裝圖文教程

昨天下午,魅族發布了全新系列魅藍手機——魅藍E,定位魅藍高端產品線,售價1299元,李楠號稱魅藍E采用三四千元的旗艦機工藝,外觀/屏幕/拍照提升明顯。此外,魅藍E依舊支持全網通雙卡雙待。那么魅藍E怎么插卡/裝…

快速冪總結

快速冪總結 快速冪這個東西比較好理解,但實現起來到不老好辦,記了幾次老是忘,今天把它系統的總結一下防止忘記。 首先,快速冪的目的就是做到快速求冪,假設我們要求a^b,按照樸素算法就是把a連乘b次,這樣一來…

第三章

一.項目前期的主要工作 1.現狀分析 ①.硬件分析 ②.軟件分析 2.需求收集 3.粗略設計 ①.體系結構分析 ②.硬件(網絡)設計 ③.應用系統設計 ④.安全設計 ⑤.配套設計 4.可行性分析 二.結構的項目前期實例 1.組織分析 3.需求收集 4.粗略設計 ①.系統體系結…

進程的靜止和活動狀態

進程有3個主要狀態,即就緒,執行和等待。當一個進程被創建的時候,處于就緒狀態,嚴格地說是靜止就緒狀態,等到被激活,該進程就處于活動就緒狀態,如果時間片輪到該進程,那么該進程就執行…

榮耀magic3會用鴻蒙,趙明:榮耀Magic3芯片領先行業,大家看到以后會換掉手機!...

榮耀CEO趙明親自參加高通2021技術峰會,宣布與高通達成戰略合作,未來全系產品采用高通平臺。趙明同時透露未來的產品動向,不排除未來與華為繼續合作,采用鴻蒙操作系統的可能。趙明表示,Android操作系統依舊是榮耀的首選…

公司里從員工到經理,不同層級應該關注的事情

最近在看《領導梯隊》,超級棒的一本書,受益匪淺,推薦給各位從事管理方向的朋友 第一階段:從管理自我到管理他人(leader級)   新員工工作的最初幾年是個人貢獻者。無論他們從事的是銷售、會計、工程或是市…

繼續教育學習腳本

/* 本腳本運行于瀏覽器conlose中,自動點擊“繼續學習”按鈕,以實現阻止視頻的暫停 */ (function(){ var getStylefunction(obj,styleName){ if(obj.style){ return obj.style[styleName]; }else if(obj.currentStyle){ …

三周第三次課 3.7 su命令 3.8 sudo命令 3.9 限制root遠程登錄

3.7 su命令1、su命令su命令是用來切換用戶的;su命令需要使用- 進行切換,如果不使用- 也可以,但當前目錄是在root下,沒有徹底切換在root下 使用su命令創建文件,以指定用戶的身份創建文件切換后顯示-bash-4.2因為user5的…

js中加載指定的html代碼,在js或JQuery中怎樣判斷頁面html代碼中含有指定名稱的div元素...

在我們制作網頁的過程中,想要在某個頁面中的某一元素中添加新的內容,而不想改動那個頁面,我們一般會直接在全局的jsz中直接加入document.getElementById("指定id")來給定指定元素新的內容,但在一些頁面中沒有指定id的div元素瀏覽器就會報錯&am…

處理機和cpu的區別

處理機 處理機是計算機系統中存儲程序和數據,并按照程序規定的步驟執行指令的部件。程序是描述處理機完成某項任務的指令序列。指令則是處理機能直接解釋、執行的信息單位。處理機包括中央處理器(cpu),主存儲器,輸入-輸出接口。處…

三星手機官方固件下載

一,網站下載: https://updato.com/firmware-archive-select-model 查詢對應固件信息 https://www.sammobile.com/firmwares/galaxy-a7/SM-A7000/ http://samsung-updates.com/device/?idSM-A7000&detailsSM-A7000 二,下載器下載&#x…