Android little error records

1:在清单文件(Manifest)中加入权限时要注意,如下例:

<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>

<uses-permission  android:name="android.permission.CHANGE_WIFI_STATE"/>

而非:

<uses-permission

android:name="android.permission.CHANGE_NETWORK_STATE"

android:name="android.permission.CHANGE_WIFI_STATE"/>

写成后一种情况将会报如下错误:

已经为元素 "uses-permission" 指定绑定到名称空间 "http://schemas.android.com/apk/res/android" 的属性 "name"。

2:Replace "..." with ellipsis character (…, &&;#8230;) ?

按照提示即可解决,提示的意思即为,用省略号的字符形式(…, &&;#8230;)?替换省略号"..."(这个省略号是由英文状态下输入的三个圆点),其中(…, &&;#8230;)?貌似是一个正则表达式(本人不太确定),解决方法有两个:

第一种方法:跳到中文输入法下,按shift+^打出省略号

第二种方法:直接将省略号替换为【…】

猜测原因:可能是在字符编码的情况下,省略号可以更好的显示吧

3:这里记录的只能算是一个小小的经验,不知道有时候你遇到过这样的问题没有,当你引用一个drawable资源,比如图片资源时,你引用后系统报错,说找不到这样的资源,而且有时候你即使把你的图片重命名了也不行,这个时候建议你仔细检查你的图片名称,有时候在图片的名称里面会偶然加入一些空格,英文状态下的空格有时候你不细心去看,还真的难以发现那么一个小小的空格,但是可能这个空格就会一直导致你的编译器给你报错。遇到了这种情况,如果确保了你的命名格式对的话,希望你可以仔细检查一下名字,看看有没有写错。

4:ADT警告:This tag and its children can be replaced by one <TextView/> and a compound drawable

下面的解决方案来自:http://*.com/questions/3214424/android-layoutopt-this-tag-and-its-children-can-be-replaced-by-one-textview

以一个例子呈现:

修改之前的布局文件
  1. <LinearLayout
  2. android:layout_width="fill_parent"
  3. android:layout_height="wrap_content"
  4. android:layout_marginTop="10dp"
  5. android:padding="5dp" >
  6. <TextView
  7. android:layout_width="wrap_content"
  8. android:layout_height="wrap_content"
  9. android:layout_weight="1"
  10. android:text="My Compound Button" />
  11. <ImageView
  12. android:layout_width="wrap_content"
  13. android:layout_height="wrap_content"
  14. android:src="@drawable/my_drawable" />
  15. </LinearLayout>
修改之后的布局文件
  1. <TextView
  2. android:layout_marginTop="10dp"
  3. android:layout_width="fill_parent"
  4. android:layout_height="wrap_content"
  5. android:text="My Compound Button"
  6. android:drawableRight="@drawable/my_drawable" android:padding="5dp" />

但有时候,我们或许在一个<Linearlayout>中设置<TextView>   <ImageView>另有他用。一个很好的修改方法就是将<Linearlayout>修改为<RelativeLayout>布局,其次对于 android:drawableRight属性不可以使用,否则将会抛出另一个异常:Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path),因为这个属性对象是drawable。

下面是一个示例:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent">
  5. <ImageView
  6. android:id="@+id/image"
  7. android:contentDescription="@string/cs"
  8. android:layout_width="90dip"
  9. android:layout_height="90dip"
  10. />
  11. <TextView
  12. android:id="@+id/title"
  13. android:layout_width="wrap_content"
  14. android:layout_height="wrap_content"
  15. android:layout_below="@id/image"/>
  16. </RelativeLayout>

5:Eclipse警告:Warning:ArrayList is a raw type. References to generic type ArrayList should be parameterized 解决方案超赞(暂未翻译),参见:http://www.cnblogs.com/killerlegend/p/3349663.html

6:textview cannot be cast to imageview........

可以尝试的解决方法:Project-->clean,然后重新启动一次程序。

7:

Android之 ListView 的setonItemSelectedListener()之item单元点击无效处理方法

可以考虑换成下面的解决方法:

  1. mListView.setOnItemClickListener(new OnItemClickListener()
  2. {
  3. @Override
  4. public void onItemClick(AdapterView<?> parent, View view, int position,long id)
  5. {
  6. Toast.makeText(getApplicationContext(),
  7. "当前所在行为:"+Long.toString(parent.getItemIdAtPosition(position)+1),
  8. Toast.LENGTH_SHORT).show();
  9. }
  10. });

模拟器的鼠标滚动时会触发setItemOnselected()事件,而真机使用的软件,应该用 setItemOnClick().即手指头点击屏幕所出发的事件。

8:Error:ScrollView can  host only one direct child.......

意思就是ScrollView中只能有一个直接子代,如果出现两个或者两个以上,那么久会出现错误。你将scrollview中的子代换成一个就解决问题了。

9:AlertDialog提示错误:android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application

原因:在使用AlertDialog的时候,如下:

Dialog dialog = new AlertDialog.Builder(context).
setTitle("温馨提示").
setIcon(R.drawable.image).
setMessage("本应用目前仅支持xxx地区,谢谢您的支持!").create();
dialog.show();

出错原因在于AlertDialog.Builder(context)中传入的参数context不正确,传入的context不能由getApplicationContext()获得,而必须是Activity的名字,如果你的Activity的类的名字是Home.java

那么你在传入context的时候,只需传入Home.this即可。

10:报错:

 android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

在Intent变量中声明FLAG_ACTIVITY_NEW_TASK

Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
上一篇:MyBatis:GeneratorConfig生成mapper以及pojo


下一篇:HDU-1049