自己在开发过程中碰到的一些错误 及 一些经验总结,主要针对一些刚开始步入开发行业的新人,大神可直接忽略此贴

android 开发显示loading_android 开发显示loading

。给开发新人提供一些经验介绍!

android 开发显示loading_android 开发显示loading

从最简单的问题开始来说:

1.R文件缺失 找不到R文件

android 开发显示loading_android 开发显示loading

查看res中资源文件,图片,xml等。

1)比如图片文件名不能有大写不能有空格。2)xml中不能有错误   xml中有错误  记得不要clean项目 一旦clean  所有的类中都会报错显示找不到R文件   最后搞定错误之后  Project->clean就可以了。

2.空指针异常

android 开发显示loading_android 开发显示loading

这个最常见 最初级 但是好多人还是会犯的一个错误。

1)变量为空  2)控件view为空  这个都是因为没有初始化 的原因。

举两个简单的例子: String str;   str.equals("s"); //没给str赋值  直接使用 str还是null

Button sButton;sButton.setText(""); //没有初始化sButton  sButton 还是null

3.ClassNotFoundException Didn't find class "xxx.xxx.xx" 找不到对应的类

android 开发显示loading_android 开发显示loading

这个是因为新加的activity需要在 AndroidManifest.xml 里面注册一下这个类  不然就会报这个异常。

4. java.lang.ClassCastException: 类型转换错误

android 开发显示loading_android 开发显示loading

这个是因为 类型转换错误,举个例子  将button 转换为 EditText   LinearLayout 转换为RelativeLayout的时候都会报这个异常

只需要检查程序中变量或者 view的 类型就可以

5.java.lang.IndexOutOfBoundsException用非法索引访问数组时抛出的异常

android 开发显示loading_android 开发显示loading

这个在Android中一般在    适配器adapter里面容易出现 ,这个地方一般会产生数据交互。出现这个错误一般直接检查 数据层就可以了。

像这些简单的错误 在后台日志中都可以定位到 当前出现错误的类和第几行  直接找到对应的  检查改掉就好了。

6.java.lang.SecurityException 缺少权限异常

android 开发显示loading_android 开发显示loading

这个异常 原因 是没有在AndroidManifest.xml 里面注册相应的权限  看缺少哪个权限 注册一下就ok了!

写法类似这样 具体缺少哪个权限 改成对应的名字就好

6.android library cannot be launched

点击运行的工程右键出现Properties,

android 开发显示loading_android 开发显示loading

点击Properties,进入把is library 前的对勾去掉

android 开发显示loading_android 开发显示loading

然后重新运行就ok了。

下面介绍一些Android开发中一些常用的经验技巧

1.自定义title栏。

首先要在values->styles中定义一个style,然后在mainfest文件中设置android:theme. 最后在Activity中按照这个顺序写: super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.activity_main); getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_layout);

2.imagView居中显示问题

xml设置如下: <?xml version="1.0" encoding="utf-8"?>

3.去掉Activity的标题栏,全屏显示

在manifest文件中修改对应的Avtivity属性。

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

4.如何修改应用名称及应用图标

修改程序的图标,修改drawable文件夹的i→→c_launcher.png图标,把新的图标改名覆盖就可以了。 如果你要自己的名称,可以修改AndroidManifest.xml的这个节点,application android:icon="@drawable/ic_launcher",不需要加文件扩展名。 ps:有些手机 比如 红米1s 。之前手机安装过程序  然后修改程序图标以后需要重启手机 才能看到修改后的图标。( 应该是手机系统的问题)!

5.调试程序

调试的时候程序如果出错,一般是查看logcat,看error发生的地方,会提示在程序的第几行,然后去找就可以了。

但有些错误没办法定位,那就把日志输出成txt,然后去google,baidu吧。

6.有点击效果的button 设置样式的方法。

首先是准备好按钮不同状态的图片 然后 在res/drawable中定义selectorBtn.xml的xml文件 <?xml version="1.0" encoding="utf-8"?> 最后Button的background属性中设置

7、requestCode和resultCode的区别

在使用startActivityForResult()和onActivityResult()时,会分别用到requestCode和resultCode,有时候极容易将2个参数混淆起来。

requestCode 和 resultCode 混淆说明错的。

startActivityForResult(Intent intent, Int requestCode)

intent 传给B的,requestCode >=0就好,随便用于在onActivityResult()区别哪个子模块回传的数据,如果还有C.java ,D甚至E子模块的话,每个区分开不同的requestCode就好。

setResut(int resultCode, Intent intent)

resultCode 如果B子模块可能有几种不同的结果返回,可以用这个参数予以识别区分。这里还有个特殊的 RESULT_OK 值,没有特殊情况用它就好了。intent 继续不解释,传回给A的onActivityResult()

onActivityResult(int requestCode, int resultCode, Intent intent)

这里三个都不用解释了,与上文对应的东西。如果不对requestCode和resultCode 加以识别区分的话,只要有其他activity setResult到了A onActivityResult()会无差别处理。

8、在布局中使用scrollview 实现布局可以滚动效果  (滚动条):

把原来的布局用

android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scrollbars="none">

括起来即可实现视图的滚动。


9、全局变量Application Context

创建一个属于你自己的.Application的子类,然后在manifest中申明一下这个类,这是android就为此建立一个全局可用的实例,你可以在其他任何地方使用Context.getApplicationContext()方法获取这个实例,进而获取其中的状态(变量)。 下面看一下Demo:

class MyApp extends Application {
private String myState;
public String getState(){
return myState;
}
public void setState(String s){
myState = s;
}
}
class Blah extends Activity {
@Override
public void onCreate(Bundle b){
...
MyApp appState = ((MyApp)getApplicationContext());
String state = appState.getState();
...
}
}

这个效果就是使用静态变量是一样的,但是其更符合android的架构体系。 使用这种方法的话需要在AndroidManifest.xml中配置一下:

android:icon="@drawable/icon"
android:label="@string/app_name">