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.mzph.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…