(Notification)setLatestEventInfo方法在新SDK不能使用的解决方法及2个Error

今天项目刚好要用到 Notification  。刚开始我是这样写的:

Notification notification2 = new Notification(R.mipmap.icon_demo, "通知测试", System.currentTimeMillis());
notification2.setLatestEventInfo(getActivity(),"testTitle","testContent",null);

结果androidstudio报错,setLatestEventInfo该方法找不到,实际上该方法存在于源码中


因为我用的是最新的SDK 23,对比SDK 22的源码如下


比较两个版本的源码我们可以发现Notification.java在SDK23中比SDK 22中多了一行注释 “@removed”,这意味着如果你的工程是用SDK 23的那么此方法用不了,如果想用的话将编译版本换成 SDK 22即可。

那么在AS中如何装换SDK呢?

如何改了,依照惯例,我直接上图吧:

File-->Project structure,打开如下界面,这个是改整个工程的SDK版本:


这里是针对不同的module进行更改。


好了,选择你要的sdk的版本,apply,然后再ok,大功告成。


可是也有例外,类似于如下错误:

当你的androidAPI 由2.1版本更换成2.2版本时:
  res/vavlues/styles.xml中使用的android:WindowTitle会报以下异常,
error: Error retrieving parent for item: No resource found that matches the given name 'android:WindowTitle'.
从而导致我们的程序无法编译通过。

原因:
android2.1中的某些API(包括类方法或者XML属性)更换成android2.2时,它们的路径已经发生了改变,从而导致编译器无法找到它们,所以编译无法通过。


解决方案:
1. 在Eclipse中打开任意一个.java文件,输入
     android.R.style.
     这时你会看到一个提示列表,仔细看看,里面确实没由WindowTitle, 但是我们发现了一个TextAppearance_WindowTitle. 没错, 在android2.2中,它已经被改成了 TextAppearance_WindowTitle

2. 回到报错的res/values/styles.xml,  将<style name="XWindowTitle" parent=""> 
     相应地修改成
    <style name="XWindowTitle" parent=" android:TextAppearance.WindowTitle">

   注意:这里你也许会注意到 .java文件中的XML属性,与 .xml文件中XML属性很是类似。
   这不是巧合,android官方文档规定:
   java文件中的 android.R.style. TextAppearance_WindowTitle 对应
   xml文件中的 android:TextAppearance.WindowTitle。 “下划线”与“点”时对应关系。

关于Styles and Themes 之间的关系,请参考官方网站


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值