Android常见问题及开发经验总结(一)

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

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

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

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

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

 2.空指针异常 

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

   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" 找不到对应的类

   

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

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

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

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

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

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

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

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

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

<uses-permission android:name="android.permission.INTERNET" />写法类似这样 具体缺少哪个权限 改成对应的名字就好

6.android library cannot be launched

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

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

然后重新运行就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"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:orientation="vertical" >
    <ImageView
        android:layout_width="wrap_content"
    android:layout_height="wrap_content"
        android:id="@+id/myImageView"
        android:layout_gravity="center"
        android:scaleType="matrix"
        android:src="@drawable/pic" >
    </ImageView>
</LinearLayout>

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"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 定义按钮点击时的图片 -->
    <item android:drawable="@drawable/btn_focus" android:state_pressed="true"/>
    <!-- 定义按钮默认的图片 -->
    <item android:drawable="@drawable/btn_default"/>
</selector>
最后Button的background属性中设置
<Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/selectorBtn"/>
 

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 实现布局可以滚动效果  (滚动条):

把原来的布局用<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:scrollbars="none"></ScrollView>括起来即可实现视图的滚动。

9、全局变量Application Context

创建一个属于你自己的android.app.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中配置一下:

<application android:name=".MyApp" 

       android:icon="@drawable/icon" 

       android:label="@string/app_name">

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Android Studio是由Google开发的一款专为Android应用开发的集成开发环境(IDE)。它为开发人员提供了丰富的工具和功能,大大简化了Android应用程序的开发过程。 首先,Android Studio提供了强大的代码编辑功能。它具有智能代码补全、语法高亮、代码导航等功能,使开发人员能够更快速和准确地编写代码。此外,Android Studio还支持许多常用的编程语言,如Java、Kotlin等,使开发人员能够根据自己的喜好和经验选择合适的语言进行开发。 其次,Android Studio还提供了易于使用的界面设计工具。开发人员可以使用布局编辑器来创建应用程序界面,并通过拖拽和放置来设计界面布局。此外,Android Studio还支持主题和样式的自定义,使开发人员能够轻松地创建符合自己应用风格的界面。 另外,Android Studio还内置了强大的调试工具和性能分析工具。开发人员可以使用调试工具来查找和修复应用程序中的错误和问题,以确保应用程序的稳定性和质量。同时,性能分析工具可以帮助开发人员分析应用程序的性能瓶颈,并优化应用程序的性能,提升用户体验。 此外,Android Studio还支持丰富的第三方库和插件,开发人员可以利用这些工具来扩展和增强开发环境的功能。这些库和插件可以帮助开发人员更容易地解决常见开发问题,提高开发效率和代码质量。 总结而言,Android Studio是一款功能强大、易于使用的Android应用开发工具。它提供了丰富的工具和功能,帮助开发人员更高效地开发和调试Android应用程序。无论是初学者还是有经验开发人员,都可以从Android Studio中受益,并且可以更快速地创建出高质量的Android应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

再见孙悟空_

你的鼓励将是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值