1、广播接收器中启动Activity,需要在intent中添加FLAG_ACTIVITY_NEW_TASK

/**
* Demo描述:
* 在BroadcastReceiver中启动Activity的问题
*
* 如果在BroadcastReceiver的onReceive()方法中如下启动一个Activity
* Intent intent=new Intent(context,AnotherActivity.class);
* context.startActivity(intent);
* 可捕获异常信息:
* android.util.AndroidRuntimeException:
* Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag.
* Is this really what you want?
* 它说明:在Activity的context(上下文环境)之外调用startActivity()方法时
* 需要给Intent设置一个flag:FLAG_ACTIVITY_NEW_TASK
*
* 所以在BroadcastReceiver的onReceive()方法中启动Activity应写为:
* Intent intent=new Intent(context,AnotherActivity.class);
* intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
* context.startActivity(intent);
*
*
* 之前描述了问题的现象和解决办法,现在试着解释一下原因:
* 1 在普通情况下,必须要有前一个Activity的Context,才能启动后一个Activity
* 2 但是在BroadcastReceiver里面是没有Activity的Context的
* 3 对于startActivity()方法,源码中有这么一段描述:
* Note that if this method is being called from outside of an
* {@link android.app.Activity} Context, then the Intent must include
* the {@link Intent#FLAG_ACTIVITY_NEW_TASK} launch flag. This is because,
* without being started from an existing Activity, there is no existing
* task in which to place the new activity and thus it needs to be placed
* in its own separate task.
* 说白了就是如果不加这个flag就没有一个Task来存放新启动的Activity.
*
* 4 其实该flag和设置Activity的LaunchMode为SingleTask的效果是一样的
*
*
* 如有更加深入的理解,请指点,多谢
*
*/
该flag和设置Activity的LaunchMode为SingleTask的效果是一样的,这里理解其实并不是非常准确
2、http://stackoverflow.com/questions/4709137/solution-to-install-failed-insufficient-storage-error-on-android
3
substring(参数)是java中截取字符串的一个方法
有两种传参方式
一种是public String substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串。该子字符串从指定索引处的字符开始,直到此字符串末尾。
另一种是public String substring(int beginIndex, int endIndex)
返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。
因此,该子字符串的长度为 endIndex-beginIndex。
4、导入google的第三方jar包:GSON时,出现如下问题:
java.lang.NoClassDefFoundError: com.google.gson.Gson
解决方法:右键点该项目,选Build Path-->Configure Build Path  选上gson,然后ok,然后关闭eclipse,重新打开后即可

4、The value for annotation attribute ViewInject.value must be a consta 添加注解的第三方库library是不要勾选上is library选项 5、 java.lang.IllegalStateException The specified child already has a parent. You must call removeView()

在android开发过程中,有时会在不同情况下遇到同种问题:


  1. java.lang.IllegalStateException The specified child already has a parent. You must call removeView() on the child's parent first.

  1. java.lang.IllegalStateException The specified child already has a parent. You must call removeView() on the child's parent first.
也就是非法状态异常,它说这个特定的child已经有一个parent了,你必须在这个parent中首先调用removeView()方法,才能继续你的内容。这里很明显这个child是一个View,一个子(child)View必须依赖于父(parent)View,如果你要使用这个child,则必须通过parent,而你如果就是硬想使用这个child,那么就得让这个child与parent脱离父子关系(即removeView())……算了还是举个简单的例子来说明一下,省的我说的乱七八糟,你听的也晕。

新建一个项目,布局文件中仅包含一个TextView和一个ImageView,布局方式是线性布局(具体可以参考后面的源代码),运行的结果就是显示一个文本和一张图片,


在Activity的onCreate()方法中,我们通常使用以下这种方式来使用布局文件main.xml。


  1. setContentView(R.layout.main);
这里为了解释今天要讲解的这个异常,换一种布局文件的使用方式,即把上面的那一行代码注释掉,换成以下代码:

//获取Infalter对象

  1. LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
  2. LinearLayout parent = (LinearLayout) inflater.inflate(R.layout.main, null);
  3. ImageView child = (ImageView)parent.findViewById(R.id.child);
  4. setContentView(parent);
LayoutInflater为布局填充类,不明白的可以自己查,或者有机会我将在博客中介绍一下,然后是将main.xml文件inflate为LinearLayout文件,再得到child,即ImageView。然后就是通过调用setContentView(parent)将这个布局main.xml显示出来,这时得到的效果和仅使用setContentView(R.layout.main)这句代码得到的效果一样。

下面的操作将会出现异常了,大家注意:

  1. setContentView(child);
也就是将上文setContentView(parent),中的parent换成child。异常请看如下截图:


而这时在异常中它提示要再parent中调用removeView()。这里我们就听从指挥,在setContentView(child),之前添上一句parent.removeView(child),这时就不会再调用setContentView(child)就不会异常了,当然当前显示的将只是一幅图片了,而这时如果你调用setContentView(parent)的话将只显示文本内容,因为我们已经将child remove掉了嘛。


5、eclipse导入别人的项目,中文总是出现乱码该怎么解决?
菜单栏点击window 选择perferneces  出现个弹出框
选择General 选项中的Workspace 这选项
里面有个Text file encoding 这个选项 此处根据导入代码的中文编码方式来选择,不知道的情况下可以随意尝试一般采用UTF-8或GBK格式
6、使用Genymotion调试出现错误INSTALL_FAILED_CPU_ABI_INCOMPATI
 

当我们安装好Genymotion后,把Android运用部署到上面调试时,console控制台会报错:Installation error: INSTALL_FAILED_CPU_ABI_INCOMPATIBLE,这是因为系统里缺少了 Google Play 市场等各种谷歌服务应用,其实是因为版权问题,从 2.0 版本开始 Genymotion  提供的虚拟设备都已经移除了 Google Apps  以及 ARM library support ,所以,如果通过软件里下载回来的虚拟机在运行一些必须依靠这些组件运行的 App 时就会出现错误或闪退现象。

解决办法:

  1. 下载Genymotion-ARM-Translation.zip

  2. 运行Genymotion,并start你配置好的virtual device

  3. 将下载好的Genymotion-ARM-Translation.zip直接拖动到virtual device,然后点击ok:

  4. 最后会弹出安装成功的信息

5.关闭virtual device以及Genymotion,重新启动。

再次部署Android应用在上面就可以成功了

6、Suggestion: use tools:overrideLibrary="android.support.v17.leanback" to force usag

Android Studio下修改方法:

在manifest中添加<uses-sdk tools:overrideLibrary="android.support.v17.leanback"/>,不要忘了也要包含xmlns:tools="http://schemas.android.com/tools"。如下图:

android常见问题的更多相关文章

  1. android常见问题(一)

    一:文本的颜色选择器: 在res目录下面创建color文件夹,在color文件夹下面创建font_style_colors.xml文件<?xml version="1.0" ...

  2. Android 常见问题收集 (持续更新)

    gridview中设置item的高度. 一.BaseAdapter中的getView中设置 AbsListView.LayoutParams param = new AbsListView.Layou ...

  3. Android常见问题及解决方案收集

    1.手机安裝Apk时提示“无法打开文件” 出现这个问题,是因为下载的服务端对APK的MIME类型设置错误导致,一般会设置为application/vnd.android,其实这是错误的,应该设置为ap ...

  4. Android常见问题——找不到HttpClient和okHttp的包

    今天再用Android Studio进行网络编程的时候遇到了一个问题,就是怎么也找不到HttpClient的包,上网搜了一下也没什么结果,但最后偶然解决问题,下面总结了一下方法: 首先打开File-& ...

  5. Arcgis Android 常见问题

    关于arcgis android 安装包较大的问题 如果想缩小大小,可以只保留armeabi,只是这样就不支持x86类型cpu的手机了. 可以考虑做成单独的版本,供用户下载. 即打2个包,一个供普通a ...

  6. Cocos2d-x移植Android 常见问题处理办法

    1.函数.变量出现"could not be resolved "问题 出现此问题通常是没有找到cocos2d-x声明的头文件.在eclipse将cocos2d的头文件文件夹引入. ...

  7. arcgis for android常见问题回答

    Q:arcgis for android最新版本是多少?(2014-7-18) Arcgis for android 10.2.3 sdk 百度盘下载地址:http://pan.baidu.com/s ...

  8. Android常见问题总结(二)

    1.布局文件LinearLayout线性布局添加内容报错. 解决方法: 线性布局LinearLayout中包裹的元素多余1个需要添加android:orientation属性. 2.android 的 ...

  9. Android常见问题——Genymotion无法启动问题

    在官网下载了Genymotion和VirturalBox的合集安装之后启动模拟器的时候发现启动不了(默认下载,啥都没干),在网上找了一些方法,也没有解决,最后偶然看到一种方法才解决的,先看一下具体的问 ...

随机推荐

  1. eclipse中如何修改dynamic web module version

    java项目中,若切换服务器,经常会涉及到动态web模块版本的问题.      比如:新建了web项目,开始使用tomcat服务器,但是后来使用jboss服务器,就会出现:Project facet ...

  2. HTTP协议 (四) 缓存

    HTTP协议 (四) 缓存 阅读目录 缓存的概念 缓存的好处 Fiddler可以方便地查看缓存的header 如何判断缓存新鲜度 通过最后修改时间,判断缓存新鲜度 与缓存相关的header ETag ...

  3. velocityjs 动画库 比jquery默认的animate强

    神坑记录: 1.transform: translate3d(80%,0,0); 无法作为参数,必须修改为这种:translateX: 0% 官方文档 http://velocityjs.org/ g ...

  4. BizTalk开发系列(十九) BizTalk命名规范

    目前BizTalk项目的开发人员比较少,但是在开发过程中还是需要命名规范的约束.根据以往BizTalk项目的经验,整理了BizTalk命 名规范.包括:BizTalk Application, Sch ...

  5. 将公网IP自动发到Twitter上

    [Twitter] 1. 在https://apps.twitter.com/创建新的应用 2. 在https://dev.twitter.com/rest/reference/post/status ...

  6. Android中Parcelable接口用法

    from: http://www.cnblogs.com/renqingping/archive/2012/10/25/Parcelable.html Interface for classes wh ...

  7. java发布web项目

    Java Web 项目发布流程 一.基本条件 jdk tomcat 二.操作步骤 4.生成war包:Eclipse:右键项目->Export->WAR file,如:hello.war 4 ...

  8. 论MySQL的监控和调优

    懂PHP的人一般都懂MySQL这一点不假,大多数书籍里也是这样,书中前面讲PHP后面到数据库这块就会讲到MySQL的一些知识,前几年MySQL一直是PHP书籍的一部分,后来开始从国外翻译了一些专门讲述 ...

  9. Python开发程序:ATM+购物商城

    一.程序要求 模拟实现一个ATM + 购物商城程序 额度 15000或自定义 实现购物商城,买东西加入 购物车,调用信用卡接口结账 可以提现,手续费5% 每月22号出账单,每月10号为还款日,过期未还 ...

  10. selected对话框全选

    selected对话框全选 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...