作为新手接触安卓遇到的问题~~还没完成~~~

原创 2015年11月19日 17:14:48

 

 

 

 

 

 

 

1、           基础介绍... 2

1、      上下文(context)... 2

2、Logcat:...2

2、DEBUG..7

1、调试遇到的问题...7

2、Debug发现的小知识...9

知识1:id.9

知识2:颜色...9

知识3:单位...9

知识4向虚拟机中写入文件(详情可参考com…..login/Loginservice)...9

知识5:从虚拟机中读文件...10

3、调试常用到的函数...10

4、未解决的问题...11

3、快捷键:...11

4、软件测试...17

5、占鹏...17

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1、基础介绍

1、上下文(context)

(详情可参考知识4):

就是一个类,提供一些方法,提供一些方便的api可以得到应用程序环境,环境包名,安装路径,文件路径,资源的路径,资产的路径,例如:可以得到路径来保存文件,或者得到图片

 

2、Logcat:

日志信息是等级的

Verbose:提醒黑色

Debug:调试蓝色

Info:信息绿色

Warn警告黄色

Error:错误红色

3Linux系统下的文件权限

位置0: –代表文件

d代表文件夹/目录

一般情况下android下的每一个应用程序都是一个独立用户,对应一个独立的组

位置1-3: 当前用户的权限  r可读,w可写,x可执行

位置4-6:当前用户所在的组的权限  r可读,w可写,x可执行//查看组在命令行里adb shell

就拿第一个为例第一例是权限设置,第二列是文件的id,第三列是所处的组

位置7-9:其他用户的权限  r可读,w可写,x可执行

-表示0

其他为1

权限也可以修改:

Chmod:chang mode

assets 资产目录 存放一个文件的,这些文件会被原封不动打包到应用程序的apk(安装包)打包资源

bin编译后的目录

 

gen自动生成的文件目录

 

project.properties文件     target编译的版本,对应的andriod的版本

 

libs 支持jar包 会被添加到Andriod depend目录下

 

res 资源文件

drawable存放应用程序图标

h 高分辨率

m 中间分辨率

l 低分辨率

x 特大分辨率

xx 超大分辨率

根据手机屏幕来自动加载图标大小,还会自动生成一个id在R文件里。

 

AndroidManifest.xml

 

<?xmlversion="1.0" encoding="utf-8"?>

<manifestxmlns:android="http://schemas.android.com/apk/res/android"

    package="com.example1.helloworld"应用程序用包名唯一标识

    android:versionCode="1"当前应用程序的版本号

    android:versionName="1.0" >

 

    <uses-sdk

        android:minSdkVersion="8"模拟器适合的最小版本

        android:targetSdkVersion="19"/>模拟器适合的最大版本

 

    <application

        android:allowBackup="true"

        android:icon="@drawable/pp"应用程序的图标

       android:label="@string/app_name"应用程序的名字

        android:theme="@style/AppTheme">应用程序的风格

        <activity应用程序的界面

           android:name="com.example1.helloworld.MainActivity"

           android:label="@string/app_name" >

            <intent-filter>该标签是将应用程序快捷图标

                <actionandroid:name="android.intent.action.MAIN" />程序的入口

 

                <categoryandroid:name="android.intent.category.LAUNCHER" />启动应用程序

            </intent-filter>

        </activity>

    </application>

 

</manifest>

C:\Users\YANG\AppData\Local\Genuitec\apache-tomcat-6.0.37

adb shell手机命令行终端

adb kill-server杀死adb调试桥

adbstart-aerver启动adb调试桥

netstat -and查看端口号

adb sendkeyevent 手机按键指令

@为R文件

 

快捷键

出现警告

ctrl+1可以进行修改

打开源代码

ctrl+鼠标左键

 

 

adb install xxx.apk安装一个应用程序

adb uninstall 包名 卸载一个应用程序

adb -s 设备名称 用来选择虚拟机

adb pull 文件名 导出后的文件名 将一个东西从设备中取出

adb push 文件名 设备中的路径 将一个文件导进去

调试

Generally, use the Log.v() Log.d() Log.i() Log.w() and Log.e() methods.

 

The order in terms of verbosity, from least to most is ERROR, WARN,INFO,

 

DEBUG, VERBOSE.Verbose should never be compiled into an application except

 

duringdevelopment. Debug logs are compiled in but stripped at runtime. Error,

 

warning andinfo logs are always kept.

2、DEBUG

1、调试遇到的问题

错误1:Attribute is missing the Android namespace prefix

可能是单词书写错误

错误2:unexpected text found in layout file

可能是多了空格或引号

显示隐藏字符/clean一下都可以

错误3:the markup in the document following theroot element must be well formed

有标签没结束

错误4:08-04 22:15:13.184: I/tag3(2578):java.lang.ClassCastException: android.widget.SearchView cannot be cast toandroid.support.v7.widget.SearchView

修改

import android.support.v7.widget.SearchView;

importandroid.support.v7.widget.SearchView.OnQueryTextListener;

改为

import android.widget.SearchView;

import android.widget.SearchView.OnQueryTextListener;

import android.app.SearchManager;

错误6

[2015-08-21 10:17:23 - S]ActivityManager: Warning: Activity not started, its current task has beenbrought to the front

这个不是Android平台的Bug,而是Android本身就是这样一种处理机制。
我们在Android平台下,通过返回按钮,或者程序本身的退出操作,去结束一个进程的时候,实际上Android虚拟机未必会将这个进程真正的结束掉,在内存允许的情况下,这个程序会以缓存的形式存在Android虚拟机中。只有在内存不足的情况下时,Android系统会清理长时间不被激活的任务,以为其他程序提供内存。
Android
这样做,是为了你下一次更加快速的启动这个程序。
所以,出现楼主这种情况,是在你的程序没有发生任何变化,并且内存足够的情况下,会将上一次执行的程序,从缓存Cached状态直接放置到任务栈的顶端,则你的程序又可以继续执行了。

消除警告解决办法:

退出虚拟机的程序从新运行一遍。

 

 

2、Debug发现的小知识

知识1:id

@+id/lv是定义一个id

@id/lv是引用一个已经存在的

知识2:颜色

颜色在xml语言中的定义在res/values中编写color。Xml文件

<resources>

    <colorname="red_bg">#f00</color>

    <colorname="blue_text">#0000ff</color>

</resources>

知识3:单位

dp==dip单位像素密度比值,与屏幕的比值。

sp==dp,方便文字的缩放,一般采用dp表示文字大小。

pt——点。一般为网页中标识字体的单位,与屏幕大小有关,跟着屏幕大小像素改变。

px——象素。一般也为网页中标识字体的单位。

两种关系:一英寸=72pt()=96px(像素),网页中最常用到的:9pt=12pxFlash中一般也是字体的常用标识单位。

 

知识4向虚拟机中写入文件(详情可参考com…..login/Loginservice)

1、File file=newFile("/data/data/com.example.login/usersinfo.txt")FileOutputStreamfos=new FileOutputStream(file);     fos.write((name+"##"+pwd).getBytes());

        fos.close();

2、 //context.getFilesDir()(上下文)显示的路径为/data/data/com.example.login/files/向files文件夹中写入文件

        Filefile=newFile(context.getFilesDir(),"info.txt");

        FileOutputStreamfos=newFileOutputStream(file);

        //name##pwd

        fos.write((name+"##"+pwd).getBytes());

        fos.close();

3、// context.getCacheDir()(上下文)显示的路径/data/data/com.example.login/cache/向缓存cache文件中写入文件,内容会随着清除缓存消失

File file=newFile(context.getCacheDir(),"info.txt");

        FileOutputStreamfos=newFileOutputStream(file);

        //name##pwd

        fos.write((name+"##"+pwd).getBytes());

        fos.close();

知识5:从虚拟机中读文件

1、(详情参考login应用)//获取要读的文件,(context.getFilesDir(),"info.txt")获取路径

File file =newFile(context.getFilesDir(),"info.txt");

        //输入流

            FileInputStreamfis=newFileInputStream(file);

 

            BufferedReaderbr=newBufferedReader(newInputStreamReader(fis));

//读取第一行

            Stringre=br.readLine();

//去掉读取文件中的##

            String[]result=re.split("##");

//将获取的内容保存到map中

            Map<String,String> map=newHashMap<String, String>();

            map.put("username",result[0]);

            map.put("password",result[1]);

3、调试常用到的函数

函数1:当我们要输出信息时,直接使用Log中提供的Log.v() Log.d()Log.i() Log.w() and Log.e()即可(将其他类型转化为String型一般用.toString()或String.Valueoff(x))

例:

  protected void onResume() {

            Log.i(Tag, "firstactivity--------onResume()");

            System.out.println("firstactivity--------onResume()");

            super.onResume();

        }

        @Override

        protected void onStart() {

            Log.i(Tag, "firstactivity--------onStart()");

            System.out.println("firstactivity--------onStart()");

            super.onStart();

        }

        @Override

函数2

System.out.println("haha ..System.out.println");

System.err.println("haha ..System.err.println");

函数3

判断是否为空

if(TextUtils.isEmpty(number))

                {

                    Toast.makeText(MainActivity.this,"号码不能为空",Toast.LENGTH_LONG).show();

                    return;

                }

4、未解决的问题

1、fragment-main中写的id在mainactivity中会显示空指针异常,将fragment-main种的内容,复制粘贴到activity-main中运行就会通过

3、快捷键:

Ctrl+1 快速修复(最经典的快捷键,就不用多说了)

Ctrl+F:查找替换

Ctrl+/ 注释当前行,再按则取消注释
Ctrl+shift+/ 注释当前行,再按则取消注释
Ctrl+D: 删除当前行 
Ctrl+Alt+↓ 复制当前行到下一行(复制增加)
Ctrl+Alt+↑ 复制当前行到上一行(复制增加)
Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)
Alt+↑ 当前行和上面一行交互位置(同上)
Alt+← 前一个编辑的页面
Alt+→ 下一个编辑的页面(当然是针对上面那条来说了)
Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性
Shift+Enter 在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后)
Shift+Ctrl+Enter 在当前行插入空行(原理同上条)
Ctrl+Q 定位到最后编辑的地方
Ctrl+L 定位在某行 (对于程序超过100的人就有福音了)
Ctrl+M 最大化当前的Edit或View (再按则反之)
Ctrl+/ 注释当前行,再按则取消注释
Ctrl+O 快速显示 OutLine
Ctrl+T 快速显示当前类的继承结构
Ctrl+W 关闭当前Editer
Ctrl+K 参照选中的Word快速定位到下一个
Ctrl+E 快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示)
Ctrl+/(小键盘) 折叠当前类中的所有代码
Ctrl+×(小键盘) 展开当前类中的所有代码
Ctrl+Space 代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用Alt+/来代替)
Ctrl+Shift+E 显示管理当前打开的所有的View的管理器(可以选择关闭,激活等操作)
Ctrl+J 正向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes line中显示没有找到了,查一个单词时,特别实用,这个功能Idea两年前就有了)
Ctrl+Shift+J 反向增量查找(和上条相同,只不过是从后往前查)
Ctrl+Shift+F4 关闭所有打开的Editer
Ctrl+Shift+X 把当前选中的文本全部变为大写
Ctrl+Shift+Y 把当前选中的文本全部变为小写
Ctrl+Shift+F 格式化当前代码
Ctrl+Shift+P 定位到对于的匹配符(譬如{}) (从前面定位后面时,光标要在匹配符里面,后面到前面,则反之)


-----------------------------------------------------------------------------------

下面的快捷键是重构里面常用的,本人就自己喜欢且常用的整理一下(注:一般重构的快捷键都是Alt+Shift开头的了)
Alt+Shift+R 重命名 (是我自己最爱用的一个了,尤其是变量和类的Rename,比手工方法能节省很多劳动力)
Alt+Shift+M 抽取方法 (这是重构里面最常用的方法之一了,尤其是对一大堆泥团代码有用)
Alt+Shift+C 修改函数结构(比较实用,有N个函数调用了这个方法,修改一次搞定)
Alt+Shift+L 抽取本地变量( 可以直接把一些魔法数字和字符串抽取成一个变量,尤其是多处调用的时候)
Alt+Shift+F 把Class中的local变量变为field变量 (比较实用的功能)
Alt+Shift+I 合并变量(可能这样说有点不妥Inline)
Alt+Shift+V 移动函数和变量(不怎么常用)
Alt+Shift+Z 重构的后悔药(Undo)

-----------------------------------------------------------------------------------

编辑
作用域 功能 快捷键 
全局 查找并替换 Ctrl+F 
文本编辑器 查找上一个 Ctrl+Shift+K 
文本编辑器 查找下一个 Ctrl+K 
全局 撤销 Ctrl+Z (撤销多了可以按Ctrl+Y前进)
全局 复制 Ctrl+C 
全局 恢复上一个选择 Alt+Shift+↓ 
全局 剪切 Ctrl+X 
全局 快速修正 Ctrl1+1 
全局 内容辅助 Alt+/ 
全局 全部选中 Ctrl+A 
全局 删除 Delete 
全局 上下文信息 Alt+?
Alt+Shift+?
Ctrl+Shift+Space 
Java编辑器 显示工具提示描述 F2 
Java编辑器 选择封装元素 Alt+Shift+↑ 
Java编辑器 选择上一个元素 Alt+Shift+← 
Java编辑器 选择下一个元素 Alt+Shift+→ 
文本编辑器 增量查找 Ctrl+J 
文本编辑器 增量逆向查找 Ctrl+Shift+J 
全局 粘贴 Ctrl+V 
全局 重做 Ctrl+Y 


查看
作用域 功能 快捷键 
全局 放大 Ctrl+= 
全局 缩小 Ctrl+- 


窗口
作用域 功能 快捷键 
全局 激活编辑器 F12 
全局 切换编辑器 Ctrl+Shift+W 
全局 上一个编辑器 Ctrl+Shift+F6 
全局 上一个视图 Ctrl+Shift+F7 
全局 上一个透视图 Ctrl+Shift+F8 
全局 下一个编辑器 Ctrl+F6 
全局 下一个视图 Ctrl+F7 
全局 下一个透视图 Ctrl+F8 
文本编辑器 显示标尺上下文菜单 Ctrl+W 
全局 显示视图菜单 Ctrl+F10 
全局 显示系统菜单 Alt+- 


导航
作用域 功能 快捷键 
Java编辑器 打开结构 Ctrl+F3 
全局 打开类型 Ctrl+Shift+T 
全局 打开类型层次结构 F4 
全局 打开声明 F3 
全局 打开外部javadoc Shift+F2 
全局 打开资源 Ctrl+Shift+R 
全局 后退历史记录 Alt+← 
全局 前进历史记录 Alt+→ 
全局 上一个 Ctrl+, 
全局 下一个 Ctrl+. 
Java编辑器 显示大纲 Ctrl+O 
全局 在层次结构中打开类型 Ctrl+Shift+H 
全局 转至匹配的括号 Ctrl+Shift+P 
全局 转至上一个编辑位置 Ctrl+Q 
Java编辑器 转至上一个成员 Ctrl+Shift+↑ 
Java编辑器 转至下一个成员 Ctrl+Shift+↓ 
文本编辑器 转至行 Ctrl+L 


搜索
作用域 功能 快捷键 
全局 出现在文件中 Ctrl+Shift+U 
全局 打开搜索对话框 Ctrl+H 
全局 工作区中的声明 Ctrl+G 
全局 工作区中的引用 Ctrl+Shift+G 


文本编辑
作用域 功能 快捷键 
文本编辑器 改写切换 Insert 
文本编辑器 上滚行 Ctrl+↑ 
文本编辑器 下滚行 Ctrl+↓ 


文件
作用域 功能 快捷键 
全局 保存 Ctrl+X 
Ctrl+S 
全局 打印 Ctrl+P 
全局 关闭 Ctrl+F4 
全局 全部保存 Ctrl+Shift+S 
全局 全部关闭 Ctrl+Shift+F4 
全局 属性 Alt+Enter 
全局 新建 Ctrl+N 


项目
作用域 功能 快捷键 
全局 全部构建 Ctrl+B 


源代码
作用域 功能 快捷键 
Java编辑器 格式化 Ctrl+Shift+F 
Java编辑器 取消注释 Ctrl+\ 
Java编辑器 注释 Ctrl+/ 
Java编辑器 添加导入 Ctrl+Shift+M 
Java编辑器 组织导入 Ctrl+Shift+O 
Java编辑器 使用try/catch块来包围 未设置,太常用了,所以在这里列出,建议自己设置。
也可以使用Ctrl+1自动修正。 


运行
作用域 功能 快捷键 
全局 单步返回 F7 
全局 单步跳过 F6 
全局 单步跳入 F5 
全局 单步跳入选择 Ctrl+F5 
全局 调试上次启动 F11 
全局 继续 F8 
全局 使用过滤器单步执行 Shift+F5 
全局 添加/去除断点 Ctrl+Shift+B 
全局 显示 Ctrl+D 
全局 运行上次启动 Ctrl+F11 
全局 运行至行 Ctrl+R 
全局 执行 Ctrl+U 


重构
作用域 功能 快捷键 
全局 撤销重构 Alt+Shift+Z 
全局 抽取方法 Alt+Shift+M 
全局 抽取局部变量 Alt+Shift+L 
全局 内联 Alt+Shift+I 
全局 移动 Alt+Shift+V 
全局 重命名 Alt+Shift+R 
全局 重做 Alt+Shift+Y

4、软件测试

1、根据测试,是否知道源代码:

黑盒测试:只关心程序执行的过程和结果

白盒测试:根据源代码写测试方法或测试用例

2、根据测试的粒度

方法测试:functiontest

单元测试:unit test

集成测试:intcrgrationtest

3、根据测试的次数

冒烟测试:smoketest(android 猴zi:cmd 命令行adb shell——>monkey-àmokey+测试次数)

压力测试:pressuretest

 

 

 

 

 

 

5、占鹏

重点:

四大组件的使用activity、broadcastreceiver、contentprovider、service

组件间通信:intent

fragment使用方式

 

 

activity启动方式、生命周期

 

存储方式:sharedpreference、sqlite、 文件

           .xml            .db文件   普通文件

 

 

网络通信:httpclient、

 

客户端server端通信模式。

 

ui

 

aol.com

 

 

jdk(java development kit)、jre(java runtime environment)

 

javac (java compile)

java -version

 

 

安装时先安装的jdk,放在了H:\java\jdk,然后会弹出一个jre安装对话框,更改安装位置:H:\java\jdk

 

jdk环境变量配置教程:

http://blog.csdn.net/zhaozhanpeng/article/details/38460393

 

sdk环境变量配置教程:

http://blog.csdn.net/zhaozhanpeng/article/details/38460591

 

 

android开发官方教程:https://developer.android.com/sdk/index.html

 

解答问题网站:

http://stackoverflow.com

 

 

http://www.slideshare.net/pritamworld/day-1-android-development-tutorial-12092012?qid=10a89e3e-2237-4da4-90a1-d6f0ce4815a9&v=default&b=&from_search=6

版权声明:本文为博主原创文章,未经博主允许不得转载。

java.lang.ClassCastException: android.widget.HeaderViewListAdapter cannot be cast to com.android.mms

解决方案:                 ListView listView = getListView();                 //ConversationListAdapter...

最近在做ShareSDK的微信分享的时候遇到了点问题,就是分享的时候选择微信好友或者微信朋友圈会打开一下微信然后界面都还没加载出来就闪退。这个问题我在网上找了好多种的可能的情况以及处理办法,最终找到了

最近在做ShareSDK的微信分享的时候遇到了点问题,就是分享的时候选择微信好友或者微信朋友圈会打开一下微信然后界面都还没加载出来就闪退。这个问题我在网上找了好多种的可能的情况以及处理办法,最终找到了...
  • wpxqlz
  • wpxqlz
  • 2017年01月19日 15:28
  • 733

安卓新手练习题,再也不会没功力学习了巴

安卓新手练习题1,入门级别的可以来练练,进步很快的。

TextView在显示文字的时候有个问题就是一行还没显示满就跳到下一行

Android的TextView在显示文字的时候有个问题就是一行还没显示满就跳到下一行,原因是: 1) TextView在显示中文的时候 标点符号不能显示在一行的行首和行尾,如果一个标点符号刚好...

收藏一下,虽然很多东西还没接触到

操作系统和类型  (2007-8-15 22:17)   1、操作系统概念     是计算机系统的一种系统软件,由它统一管理计算机系统的资源和控制程序的执行。 2、分类 (1) 批处理...

20140109早读课:设计还没完成就被吐槽指手划脚,怎么办?

这是知乎上的一个提问:作为公司的唯一UI设计师,常常设计做到一半,同事就会嘻嘻哈哈的吐槽点评,有时候是玩笑,有时候很刺耳。我觉得设计都没做完,瞎起什么哄啊,感觉很不被尊重。请问设计师们,你们怎么对付这...

如果某个页面上点击按钮发起了一个http url请求,去执行一个action,但是还没等这个action完成,我就刷新了这个页面,然后又点击了这个按钮,这样之前的那次http url请求还在执行吗?

如果某个页面上点击按钮发起了一个http url请求,去执行一个action,但是还没等这个action完成,我就刷新了这个页面,然后又点击了这个按钮,这样之前的那次http url请求还在执行吗?会...

劳动保护法,对IT的基本没啥用,还没遇到过包工头呢!

地  域:国内法      中国 名  称:中华人民共和国劳动合同法 文  号:中华人民共和国主席令第十五号 颁布单位:全国人民代表大会常务委员会 颁布日期:2007-6-29 实施日期:...

解决安卓程序安装没图标的问题

解决安卓程序安装没图标的问题,以及反编译修复它。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:作为新手接触安卓遇到的问题~~还没完成~~~
举报原因:
原因补充:

(最多只允许输入30个字)