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+^打出省略号

第二种方法:直接将省略号替换为【&#8230;】

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

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

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

下面的解决方案来自:http://stackoverflow.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.   
  7. <TextView    
  8.     android:layout_width="wrap_content"  
  9.     android:layout_height="wrap_content"  
  10.     android:layout_weight="1"  
  11.     android:text="My Compound Button" />   
  12.   
  13. <ImageView    
  14.     android:layout_width="wrap_content"  
  15.     android:layout_height="wrap_content"  
  16.     android:src="@drawable/my_drawable" />   
  17. </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.   
  4.         @Override  
  5.         public void onItemClick(AdapterView<?> parent, View view, int position,long id)   
  6.         {   
  7.             Toast.makeText(getApplicationContext(),    
  8.                            "当前所在行为:"+Long.toString(parent.getItemIdAtPosition(position)+1),    
  9.                            Toast.LENGTH_SHORT).show();   
  10.         }   
  11.       });  

模拟器的鼠标滚动时会触发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);

posted @ 2013-09-01 11:30  KillerLegend  Views(1790)  Comments(0Edit  收藏  举报