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
以一个例子呈现:
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="10dp"
- android:padding="5dp" >
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="My Compound Button" />
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/my_drawable" />
- </LinearLayout>
- <TextView
- android:layout_marginTop="10dp"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="My Compound Button"
- 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。
下面是一个示例:
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
- <ImageView
- android:id="@+id/image"
- android:contentDescription="@string/cs"
- android:layout_width="90dip"
- android:layout_height="90dip"
- />
- <TextView
- android:id="@+id/title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@id/image"/>
- </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单元点击无效处理方法
可以考虑换成下面的解决方法:
- mListView.setOnItemClickListener(new OnItemClickListener()
- {
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position,long id)
- {
- Toast.makeText(getApplicationContext(),
- "当前所在行为:"+Long.toString(parent.getItemIdAtPosition(position)+1),
- Toast.LENGTH_SHORT).show();
- }
- });
模拟器的鼠标滚动时会触发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);