编写Android项目时的常见错误

Gan*_*y C 19 java android

在Android项目上工作时应该注意哪些常见错误?

这些可以

  • Android特定错误
  • Java特定错误

Gan*_*y C 20

我将列出一些我总是得到的错误.

文章 - 十大Java错误

  • NullPointer错误

    1. 当我使用我们正在创建的未初始化的变量或对象时.(JAVA)
    2. 当我们使用一些布局视图时,我们在上下文中设置的不是xml.(Android)


  • ClassCast异常
    • 当程序试图将对象强制转换为与其不兼容的类型时.(例如:当我尝试使用在xml布局中声明为相对布局的线性布局时).


  • 的StackOverflowError
    • 它也可以在正确编写(但深度递归)的程序中出现.(java和android)
    • 当程序变得无限递归时.
    • 我们创建超出平台或虚拟机堆栈的布局(深度和复杂).递归或过多的布局将在Android中创建堆栈溢出错误
    • 内部布局太多.


  • ActivityNotFoundException:无法找到显式活动类异常

    • 活动未在清单中声明.


  • Android securityException
    • 您需要在应用程序Manifest中声明您的应用程序检查此链接的所有权限 (互联网,访问联系人,gps,wifi状态,写入SDCard等).


  • 的OutOfMemoryError
    • 当使用可用的平台资源进行无法满足的内存请求时.主要使用位图,图库等


  • 应用无响应(ANR)

    • 主要是在你进行网络功能或一些漫长的过程时.

    这将阻止UI线程,因此用户无法做任何工作.避免ANR 读这个这个

这是我在创建Android项目时主要得到的东西.

  • 尝试 在All Place of program中使用 Try-Catch 块.不要将你的catch块留空,因为这可以隐藏错误:

是:

 try{
    // try something
  } catch (Exception e) {
      Log.e("TAG", "Exception in try catch", e);
      return false;
  }
  return true;
Run Code Online (Sandbox Code Playgroud)

没有:

  try{
    // try something
  } catch (Exception e) {
    return false;
  }
  return true;
Run Code Online (Sandbox Code Playgroud)


对布局中的所有变量和ID 使用正确的命名转换.*


我从网上读了一篇文章,它包含了一些错误,我现在正在添加alos如果它有冗余,请原谅我.

问题:我以前很好的RelativeLayout正在制造一个丑陋的堆或者某些元素不再可见......发生了什么?我只是移动了一个元素...解决方案:永远不要忘记在RelativeLayout中,元素被引用并放置在它们的邻居中.也许你的元素之间的关系层次有问题.尝试在Eclipse中打开大纲视图,然后单击每个元素以查看破裂的位置.

问题:RelativeLayout解决方案中不存在循环依赖关系:您可能以两种不同的方式编写了相同的依赖关系.例如,ImageView作为属性android:layout_toRightOf是一个TextView,TextView有android:layout_toLeftOf的ImageView.其中只有一个是必要的

问题:我为我的一个视图/布局编写了一个样式,但是当我在我的xml中应用它时,我在Eclipse解决方案的布局查看器中没有显示:不幸的是,这似乎是android ADT的一个bug,我报告了到目前为止没有消息.无论如何,没有恐慌,样式运行良好,但它们在Eclipse中无法正确显示.只需构建应用程序并在模拟器或手机上启动它,您就会看到一切是否正常.

问题:Toast写得正确但没有显示任何内容解决方案:这是一个常见的使用错误:只需添加.show()方法来显示Toast并查看它是否运行良好

问题:我试图从strings.xml显示一个字符串,但我只有一个像0x7f060001的数字解决方案:这不是一个错误,只是由于android处理资源的方式显示.当你想要检索一个资源时,你必须使用像getString(R.id.something),getDrawable这样的方法,否则,你只需要显示在R类中写的引用

问题:代码中的某些更改对应用程序没有任何影响解决方案:有两个选项,要么忘记了Toast的.show(),要么模拟器没有正确更新您的应用程序.在这种情况下,您必须在Eclipse中的模拟器启动配置中选中"擦除用户数据"选项.

问题:如何在我的桌子上显示边框?解决方案:在android中没有直接的方法,你必须使用一个技巧:http://www.droidnova.com/display-borders-in-tablelayout,112.html

问题:模拟器在japaneese中编写而没有更改任何参数解决方案:有时会发生这种情况,很容易修复,只需长按任意EditText字段,然后将输入类型更改为您想要的

问题:我无法让上下文菜单出现在模拟器中解决方案:长按模拟器似乎没有在每种视图上注册,你必须按下4个方向箭头中心的按钮

问题:我正在关注地图路线的教程,但我无法使其工作,android找不到包解决方案:您可能一直在关注为1.5 SDK编写的教程.此时,有一个包在android中显示路由,但它已在下一个SDK中删除,不再可用.它再也不可能了.似乎有一个KML文件的技巧,但没有官方的

问题:向仿真器发送坐标给出错误的位置解决方案:确保编写的坐标如51.16548而不是51,16548也不是5116548

问题:只有创建视图层次结构的原始线程才能触及其视图.解决方案:您必须尝试从除UI线程之外的其他线程更新视图内容.修补此问题的2个选项:在UI线程中创建处理程序并将Runnable发布到此处理程序或使用runOnUIThread方法运行执行更新的代码行

问题:访问localhost 127.0.0.1不起作用解决方案:它工作正常,您只是没有以正确的方式执行:使用10.0.2.2


Zso*_*agy 7

  • 忘记在清单中注册新活动.
  • 在获取对ui小部件的引用时,在findViewById()上转换为错误的类型


Eri*_*ric 5

另一个典型的初学者错误是在xml中出现错误之后不清理项目...