做项目遇到的点点点滴滴(持续更新)
1.我想实现一个EditText点击后出现DatePickerDialog然后返回值到EditText显示。
做完之后发现点击EditText只是触发焦点或者弹出软键盘(我把软键盘禁用之后就只触发焦点)
然后在获得焦点之后再次点击才会出现DatePickerDialog...
方法一:这个是在View里定义onTouchEvent()的默认处理逻辑。假如一个View是可以获得焦点的话,那么第一次点击操作就是获取焦点。这里有源代码:
? boolean focusTaken = false;
??????????????????????? if (isFocusable() && isFocusableInTouchMode() && !isFocused()) {
??????????????????????????? focusTaken = requestFocus();
??????????????????????? }
??????????????????????? if (!mHasPerformedLongPress) {
??????????????????????????? // This is a tap, so remove the longpress check
??????????????????????????? removeLongPressCallback();
??????????????????????????? // Only perform take click actions if we were in the pressed state
??????????????????????????? if (!focusTaken) {
??????????????????????????????? // Use a Runnable and post this rather than calling
??????????????????????????????? // performClick directly. This lets other visual state
??????????????????????????????? // of the view update before click actions start.
??????????????????????????????? if (mPerformClick == null) {
??????????????????????????????????? mPerformClick = new PerformClick();
??????????????????????????????? }
??????????????????????????????? if (!post(mPerformClick)) {
??????????????????????????????????? performClick();
??????????????????????????????? }
??????????????????????????? }
??????????????????????? }
所以如果你想改变这个的话,只能自己重新实现一个onTouchEvent()而不调用super.onTouchEvent(),注意参考源代码。
方法二:设置edittext不能获取到焦点.就OK了,即在TextView中加入android:focusable="false"
2.一个textView点击后跳转到另一个页面。?
刚开始此textView没有跑马灯效果,布局如下:?
??????? <TextView?
??????????? android:id="@+id/title"?
??????????? android:layout_width="wrap_content"?
??????????? android:layout_height="wrap_content"?
??????????? android:textSize="25px" />?
后来觉得加上跑马灯效果更好点,故布局如下:?
??????? <TextView?
??????????? android:id="@+id/title"?
??????????? android:layout_width="wrap_content"?
??????????? android:layout_height="wrap_content"?
??????????? android:ellipsize="marquee"?
??????????? android:focusable="true"?
??????????? android:focusableInTouchMode="true"?
??????????? android:marqueeRepeatLimit="marquee_forever"?
??????????? android:scrollHorizontally="true"?
??????????? android:singleLine="true"?
??????????? android:textSize="25px" />?
但问题出现了,用上面的布局,点击之后会进行页面的跳转,用下面的布局,跑马灯效果是有了,但点击textView后不进行页面的跳转。?
那么我应该如何实现了?求解答。
方法:删除android:focusable="true",原理:android:focusable="true" ,这样当你点击时其实是点击的是textView,从而textView获取焦点而不是listView中的某一列获取焦点,当然也就不会触发onListItemClick方法,这样当然也就不会进行页面的跳转了。解决方法是:删去这个属性,就OK了!
?
?
3.201200920 -----今天又遇到个问题。android手机联互联网问题!如何判断手机是否连接互联网?本来以为很简单,以为直接调用下面的方法就可以了
?
?
/**
* 检查网络连接情况
*?
* @return 0: None, 1: Wifi, 2: GPRS, 3: Other
*/
protected static int checkNetworkType(Context context) {
ConnectivityManager connManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
?
// 获取代表联网状态的NetWorkInfo对象
NetworkInfo networkInfo = connManager.getActiveNetworkInfo();
// 获取当前的网络连接是否可用
if (networkInfo == null || !networkInfo.isAvailable())
return 0;
?
// Wifi
State state = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
.getState();
if (State.CONNECTED == state) {
return 1;
}
?
// GPRS
state = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
.getState();
if (State.CONNECTED == state) {
return 2;
}
?
return 3;
}
其实不然,我发现当手机关闭GPRS,然后连接公司的wifi,通知栏显示wifi已经连接上,并且这个方法返回值为1,我就默认为此时我们的手机已经联网了,但实际发现此时手机还是打不开网页,对应到项目中来就是我们不能从服务器获取信息。
后来想想可能是因为我们连接了wifi,但此时公司路由器并没有连外网,所以还是打不开网页,也获取不了服务器信息。怎么解决判断手机是否连接外网暂时还没有想到,继续研究....
?
?
4.20120921项目交给测试部门测试(其实自己也觉得有很多bug)
今天遇到的问题:项目在A手机上能够后运行,B手机上也能够运行,但在C手机上就运行不起来。出现:Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY的错误。在网上一查,大部分的人都说是我建工程的时候target没有选google map的target,但奇怪的是我建的项目就是google map的target。后来看到一篇文章,试着解决,终于解决了。链接:http://www.cnblogs.com/jrvin/archive/2011/05/24/2055718.html
其中遇到过Read-only file system问题,但这都是些小问题,最后还是解决了!
?
?
5.20120922项目测试又出现了一个问题,关于camera问题。拍完照传到服务器相片是逆时针旋转90度的。目前没有解决。。。努力中!