bcoder

PHP易犯错误整理

 分类:PHP 阅读 (699)  No Responses »
8月 182013
 

  1. 在子函数中引用全局变量,错误描述:在一个公共文件中定义了一个$dblink对象用于访问数据库,在另外一个文件FileA中require了这个公共文件,同时在FileA中定义了一个子函数GetUserId(),在此函数中需要访问数据库读取数据,访问数据库的时候直接使用了$dblink对象,发现根本取不到相应的数据,访问数据库不成功。

  后经gg搜索,明白了在子函数中是不能直接使用公共变量的,所以必须把$dblink对象传入这个函数中才可以使用,因此解决办法是把GetUserId()改为GetUserId($tmpdblink),再使用时把$dblink对象传入此函数。

  2. PHP中连接字符串时使用“+”操作符,PHP中的“+”操作符可用于数字型数据或者数组的操作,但是不能用于字符串的连接,所以一定要注意,因为很多其他的编程语言是用“+”进行连接字符串的,所以很容易书写错误。PHP中使用“.”来进行字符串连接。

  3. PHP写函数的时候,定义时传入的变量也要使用$以标识为变量。今天写了一个函数,定义时变量直接写的变量名字convertStatus(status),没加&,导致整个页面空白,经检查发现是这个问题,改正后convertStatus($status)问题解决。

  4. 在php文件中,引用了某个php文件(用require xxx.php),但是显示时此文件布局前面总是有一空行,用chrome和IE的开发人员工具查看,会有几个字符,但页面上没显示。经研究,是因为xxx.php文件使用的是Utf8有BOM格式,文件的前几个字节后置上utf8的标志,浏览器则把那几个字节认为了是字符来处理。

  处理方式:使用notepad++打开文件,选择格式-〉转为utf8无BOM格式,保存重新上传后问题解决。

  此问题也可能会在html或者其他网页格式文件中出现。

  5. PHP中使用多个连接的问题,使用相同配置的多个连接时,总会使用最后一个连接的DB

CSS易犯错误收集

 分类:CSS 阅读 (727)  No Responses »
8月 112013
 

1. 写子风格的时候,子风格和父风格之间无空格,如:#contactonline.co_row_comments{height: 120px;}这样是错误的,应该在#contactonline后加一空格

 Posted by on 2013-08-11

AlertDialog使用总结

 分类:Android, Java 阅读 (1,588)  No Responses »
5月 112013
 

  AlertDialog直接继承自Dialog类,可以用于显示确认提示框或者列表选择框,还可以用于显示有自定义布局的提示框,Android中内置的ProgressDialog、DatePickerDialog和TimePickerDialog都是继承自于该对象。

AlertDialog的创建

  AlertDialog的实例化函数是声明的protected的,所以不能直接通过new AlertDialog(context)来创建,而是要通过它的一个子类Builder来创建,AlertDialog的很多属性也是通过这个builder对象来实现的。

AlertDialog的区域

  AlertDialog从上到下共分3个区域,即标题区、内容区和控制按钮区。

  • 标题区用于显示提示框的标题,给用户简单提示此提示框是什么用途的。我们可以通过builder的setTitle方法来设置标题的内容。
  • 内容区可以放置详细的操作提示、信息提示或者选择列表,也可以使用自定义的Layout显示更为丰富的内容。
  • 按钮区用于放置操作按钮,最多可放置三个按钮,一个确定按钮,一个否定按钮,一个中性按钮,就如Windows程序中常见的“是、否和取消。我们可以通过setPositiveButton、setNegativeButton和setNeutralButton来设置三个按钮的显示内容和点击时的响应函数

在AlertDialog中显示一个选择列表

  AlertDialog.Builder提供了几种方法可以用于在内容区域显示一个可选择的列表框,这几种方法分别是setAdapter、setItems、setSingleChoiceItems、setMultiChoiceItems。

  • setItems(int itemsId, final OnClickListener listener)可以传入一个CharSequence数据或者一个数组资源R.array,但是此方法显示的列表的样式没办法改变,只能使用AlertDialog默认的样式,而且只能显示一列,数据只能是字符串类型。如果给后面的listener传入null值则点击列表的项目后窗口不会自动关闭。
  • setAdapter可以传入一个ListAdapter,开发者可以通过这个ListAdapter对象设计复杂的列表布局,以增加程序的可视化效果。
  • setSingleChoiceItems可以打开一个右侧带单选按钮的提示框,可接受CharSequence数组、资源数组、ListAdapter、Cursor对象,传入CharSequence数组、资源数组时右侧会显示一个单选按钮,传入ListAdapter时右侧无单选按钮,需要自己来实现单选按钮,Cursor未测试。当选择某项时,提示框不会自己关闭,而是要通过返回键或者下面的按钮来关闭提示框。
  • setMultiChoiceItems可以打开一个右侧带复选按钮的提示框,可接受CharSequence数组、资源数组、Cursor对象,不知道为什么没有支持ListAdapter。

AlertDialog中显示自定义部局

  当我们需要一个复杂的提示框的时候,我们可用自定义的Layout来填充到AlertDialog窗口中。这里主要用到的是Builder的setView方法。我们可以先用getLayoutInflater()或者getActivity().getLayoutInflater()来获取一个LayoutInflater对象,然后用View dlgV=inflater.inflate(R.layout.custom_dialog, null);得到一个View对象,然后再用setView方法将自定义部局填充到AlertDialog中。

  虽然我们可以在自定义部局中设计自己的标题和按钮,但我们仍然还可以使用setTitle和setPositiveButton等方法来使用AlertDialog中的标题栏和按钮。

  如果我们想将一个Activity转换成一个Dialog,并不需要再创建一个AlertDialog然后重新实现这些代码,只需要在AndroidManifest.xml中将Activity的Theme设置为Dialog样式的主题即可,如:

AlertDialog内容区域的优先级

  AlertDialog中详细提示信息和选择列表是不能同时显示的,几个方法的优先显示顺序为setMessage、setAdapter、setItems

Activity如何转换成Dialog

  当我们想把一个Activity转换成Dialog时,如果再建立一个AlertDialog或者DialogFragment来实现的话,很多代码都要进行修改,比如DialogFragment需要增加getActivity来实现对Activity的一些方法进行访问,也不支持设计时设置的android:onclick属性,需要在java代码中用setOnClickListener来执行单击事件,这样做起来相当的麻烦。

  那么比较简单的方法就是通过在AndroidManifest.xml中给该Activity设置一个Dialog使用的Theme来进行支持,这样做的缺点是如果使用的不是android的主题则需要自己写一个符合程序的主题。

 如何设置AlertDialog的样式

  我们需要先定义一个样式,在res/values/style.xml中定义一个MyAlertDialog的样式(此方法暂时不可用,设置效果总不是想要的效果,再研究后再发布过来)

  在代码中,创建builder的时候传入这个样式名称,如下:

点击此处下载AlertDialogTest代码

5月 082013
 

  如何使用:在Eclipse中,打开项目下的res\values目录,在values上右键,新建->Other->Android XML File,Resource Type那选择Values,输入文件的名字,如:mycolors,点“确定”,把下面表格中的文字复制到新建的文件中。在设计界面静态调用时为@color/blue,在java代码中为getResources().getColor(R.color.hotpink)

  因为页面复制过去的xml包含中文特殊字符,大家可以点击这里下载此xml文件 mycolors.xml

<?xml version=”1.0″ encoding=”utf-8″ ?>  
<resources>  
<color name=”white”>#ffffff</color><!–白色 –>  
<color name=”ivory”>#fffff0</color><!–象牙色 –>  
<color name=”lightyellow”>#ffffe0</color><!–亮黄色 –>  
<color name=”yellow”>#ffff00</color><!–黄色 –>  
<color name=”snow”>#fffafa</color><!–雪白色 –>  
<color name=”floralwhite”>#fffaf0</color><!–花白色 –>  
<color name=”lemonchiffon”>#fffacd</color><!–柠檬绸色 –>  
<color name=”cornsilk”>#fff8dc</color><!–米绸色 –>  
<color name=”seaShell”>#fff5ee</color><!–海贝色 –>  
<color name=”lavenderblush”>#fff0f5</color><!–淡紫红 –>  
<color name=”papayawhip”>#ffefd5</color><!–番木色 –>  
<color name=”blanchedalmond”>#ffebcd</color><!–白杏色 –>  
<color name=”mistyrose”>#ffe4e1</color><!–浅玫瑰色 –>  
<color name=”bisque”>#ffe4c4</color><!–桔黄色 –>  
<color name=”moccasin”>#ffe4b5</color><!–鹿皮色 –>  
<color name=”navajowhite”>#ffdead</color><!–纳瓦白 –>  
<color name=”peachpuff”>#ffdab9</color><!–桃色 –>  
<color name=”gold”>#ffd700</color><!–金色 –>  
<color name=”pink”>#ffc0cb</color><!–粉红色 –>  
<color name=”lightpink”>#ffb6c1</color><!–亮粉红色 –>  
<color name=”orange”>#ffa500</color><!–橙色 –>  
<color name=”lightsalmon”>#ffa07a</color><!–亮肉色 –>  
<color name=”darkorange”>#ff8c00</color><!–暗桔黄色 –>  
<color name=”coral”>#ff7f50</color><!–珊瑚色 –>  
<color name=”hotpink”>#ff69b4</color><!–热粉红色 –>  
<color name=”tomato”>#ff6347</color><!–西红柿色 –>  
<color name=”orangered”>#ff4500</color><!–红橙色 –>  
<color name=”deeppink”>#ff1493</color><!–深粉红色 –>  
<color name=”fuchsia”>#ff00ff</color><!–紫红色 –>  
<color name=”magenta”>#ff00ff</color><!–红紫色 –>  
<color name=”red”>#ff0000</color><!–红色 –>  
<color name=”oldlace”>#fdf5e6</color><!–老花色 –>  
<color name=”lightgoldenrodyellow”>#fafad2</color><!–亮金黄色 –>  
<color name=”linen”>#faf0e6</color><!–亚麻色 –>  
<color name=”antiquewhite”>#faebd7</color><!–古董白 –>  
<color name=”salmon”>#fa8072</color><!–鲜肉色 –>  
<color name=”ghostwhite”>#f8f8ff</color><!–幽灵白 –>  
<color name=”mintcream”>#f5fffa</color><!–薄荷色 –>  
<color name=”whitesmoke”>#f5f5f5</color><!–烟白色 –>  
<color name=”beige”>#f5f5dc</color><!–米色 –>  
<color name=”wheat”>#f5deb3</color><!–浅黄色 –>  
<color name=”sandybrown”>#f4a460</color><!–沙褐色 –>  
<color name=”azure”>#f0ffff</color><!–天蓝色 –>  
<color name=”honeydew”>#f0fff0</color><!–蜜色 –>  
<color name=”aliceblue”>#f0f8ff</color><!–艾利斯兰 –>  
<color name=”khaki”>#f0e68c</color><!–黄褐色 –>  
<color name=”lightcoral”>#f08080</color><!–亮珊瑚色 –>  
<color name=”palegoldenrod”>#eee8aa</color><!–苍麒麟色 –>  
<color name=”violet”>#ee82ee</color><!–紫罗兰色 –>  
<color name=”darksalmon”>#e9967a</color><!–暗肉色 –>  
<color name=”lavender”>#e6e6fa</color><!–淡紫色 –>  
<color name=”lightcyan”>#e0ffff</color><!–亮青色 –>  
<color name=”burlywood”>#deb887</color><!–实木色 –>  
<color name=”plum”>#dda0dd</color><!–洋李色 –>  
<color name=”gainsboro”>#dcdcdc</color><!–淡灰色 –>  
<color name=”crimson”>#dc143c</color><!–暗深红色 –>  
<color name=”palevioletred”>#db7093</color><!–苍紫罗兰色 –>  
<color name=”goldenrod”>#daa520</color><!–金麒麟色 –>  
<color name=”orchid”>#da70d6</color><!–淡紫色 –>  
<color name=”thistle”>#d8bfd8</color><!–蓟色 –>  
<color name=”lightgray”>#d3d3d3</color><!–亮灰色 –>  
<color name=”lightgrey”>#d3d3d3</color><!–亮灰色 –>  
<color name=”tan”>#d2b48c</color><!–茶色 –>  
<color name=”chocolate”>#d2691e</color><!–巧可力色 –>  
<color name=”peru”>#cd853f</color><!–秘鲁色 –>  
<color name=”indianred”>#cd5c5c</color><!–印第安红 –>  
<color name=”mediumvioletred”>#c71585</color><!–中紫罗兰色 –>  
<color name=”silver”>#c0c0c0</color><!–银色 –>  
<color name=”darkkhaki”>#bdb76b</color><!–暗黄褐色 –>  
<color name=”rosybrown”>#bc8f8f</color><!–褐玫瑰红 –>  
<color name=”mediumorchid”>#ba55d3</color><!–中粉紫色 –>  
<color name=”darkgoldenrod”>#b8860b</color><!–暗金黄色 –>  
<color name=”firebrick”>#b22222</color><!–火砖色 –>  
<color name=”powderblue”>#b0e0e6</color><!–粉蓝色 –>  
<color name=”lightsteelblue”>#b0c4de</color><!–亮钢兰色 –>  
<color name=”paleturquoise”>#afeeee</color><!–苍宝石绿 –>  
<color name=”greenyellow”>#adff2f</color><!–黄绿色 –>  
<color name=”lightblue”>#add8e6</color><!–亮蓝色 –>  
<color name=”darkgray”>#a9a9a9</color><!–暗灰色 –>  
<color name=”darkgrey”>#a9a9a9</color><!–暗灰色 –>  
<color name=”brown”>#a52a2a</color><!–褐色 –>  
<color name=”sienna”>#a0522d</color><!–赭色 –>  
<color name=”darkorchid”>#9932cc</color><!–暗紫色 –>  
<color name=”palegreen”>#98fb98</color><!–苍绿色 –>  
<color name=”darkviolet”>#9400d3</color><!–暗紫罗兰色 –>  
<color name=”mediumpurple”>#9370db</color><!–中紫色 –>  
<color name=”lightgreen”>#90ee90</color><!–亮绿色 –>  
<color name=”darkseagreen”>#8fbc8f</color><!–暗海兰色 –>  
<color name=”saddlebrown”>#8b4513</color><!–重褐色 –>  
<color name=”darkmagenta”>#8b008b</color><!–暗洋红 –>  
<color name=”darkred”>#8b0000</color><!–暗红色 –>  
<color name=”blueviolet”>#8a2be2</color><!–紫罗兰蓝色 –>  
<color name=”lightskyblue”>#87cefa</color><!–亮天蓝色 –>  
<color name=”skyblue”>#87ceeb</color><!–天蓝色 –>  
<color name=”gray”>#808080</color><!–灰色 –>  
<color name=”grey”>#808080</color><!–灰色 –>  
<color name=”olive”>#808000</color><!–橄榄色 –>  
<color name=”purple”>#800080</color><!–紫色 –>  
<color name=”maroon”>#800000</color><!–粟色 –>  
<color name=”aquamarine”>#7fffd4</color><!–碧绿色 –>  
<color name=”chartreuse”>#7fff00</color><!–黄绿色 –>  
<color name=”lawngreen”>#7cfc00</color><!–草绿色 –>  
<color name=”mediumslateblue”>#7b68ee</color><!–中暗蓝色 –>  
<color name=”lightslategray”>#778899</color><!–亮蓝灰 –>  
<color name=”lightslategrey”>#778899</color><!–亮蓝灰 –>  
<color name=”slategray”>#708090</color><!–灰石色 –>  
<color name=”slategrey”>#708090</color><!–灰石色 –>  
<color name=”olivedrab”>#6b8e23</color><!–深绿褐色 –>  
<color name=”slateblue”>#6a5acd</color><!–石蓝色 –>  
<color name=”dimgray”>#696969</color><!–暗灰色 –>  
<color name=”dimgrey”>#696969</color><!–暗灰色 –>  
<color name=”mediumaquamarine”>#66cdaa</color><!–中绿色 –>  
<color name=”cornflowerblue”>#6495ed</color><!–菊兰色 –>  
<color name=”cadetblue”>#5f9ea0</color><!–军兰色 –>  
<color name=”darkolivegreen”>#556b2f</color><!–暗橄榄绿 –>  
<color name=”indigo”>#4b0082</color><!–靛青色 –>  
<color name=”mediumturquoise”>#48d1cc</color><!–中绿宝石 –>  
<color name=”darkslateblue”>#483d8b</color><!–暗灰蓝色 –>  
<color name=”steelblue”>#4682b4</color><!–钢兰色 –>  
<color name=”royalblue”>#4169e1</color><!–皇家蓝 –>  
<color name=”turquoise”>#40e0d0</color><!–青绿色 –>  
<color name=”mediumseagreen”>#3cb371</color><!–中海蓝 –>  
<color name=”limegreen”>#32cd32</color><!–橙绿色 –>  
<color name=”darkslategray”>#2f4f4f</color><!–暗瓦灰色 –>  
<color name=”darkslategrey”>#2f4f4f</color><!–暗瓦灰色 –>  
<color name=”seagreen”>#2e8b57</color><!–海绿色 –>  
<color name=”forestgreen”>#228b22</color><!–森林绿 –>  
<color name=”lightseagreen”>#20b2aa</color><!–亮海蓝色 –>  
<color name=”dodgerblue”>#1e90ff</color><!–闪兰色 –>  
<color name=”midnightblue”>#191970</color><!–中灰兰色 –>  
<color name=”aqua”>#00ffff</color><!–浅绿色 –>  
<color name=”cyan”>#00ffff</color><!–青色 –>  
<color name=”springgreen”>#00ff7f</color><!–春绿色 –>  
<color name=”lime”>#00ff00</color><!–酸橙色 –>  
<color name=”mediumspringgreen”>#00fa9a</color><!–中春绿色 –>  
<color name=”darkturquoise”>#00ced1</color><!–暗宝石绿 –>  
<color name=”deepskyblue”>#00bfff</color><!–深天蓝色 –>  
<color name=”darkcyan”>#008b8b</color><!–暗青色 –>  
<color name=”teal”>#008080</color><!–水鸭色 –>  
<color name=”green”>#008000</color><!–绿色 –>  
<color name=”darkgreen”>#006400</color><!–暗绿色 –>  
<color name=”blue”>#0000ff</color><!–蓝色 –>  
<color name=”mediumblue”>#0000cd</color><!–中兰色 –>  
<color name=”darkblue”>#00008b</color><!–暗蓝色 –>  
<color name=”navy”>#000080</color><!–海军色 –>  
<color name=”black”>#000000</color><!–黑色 –>  
</resources>  
4月 172013
 

 

其他注意事项:

1、如何设置自己的Dialogfragment没有标题栏?
可以通过两种方法来设置 ,一种是使用dialogfragment的setStyle函数,另外就是使用getDialog().getWindow().requestFeature方法,具体代码如下

使用getDialog的方法

2. The method show(FragmentManager, String) in the type DialogFragment is not applicable for the arguments (FragmentManager, String)

此问题常是由于你所自定义的DialogFragment子类继承自android.app.dialogfragment,而非继承自android.support.v4.app.DialogFragment,解决办法就是将你的自定义的DialogFragment子类继承自android.support.v4.app.DialogFragment。如下所示:

 

4月 122013
 

1. 今天check out项目的时候,svn突然报了一个如下错误:

在网上查了一上解决办法为:

在地址和项目名称之间加上svn,本例中为如下:http://127.0.0.1/svn/financing,再进行check out就没问题了

SVN客户端:TortoiseSVN 1.7.11, Build 23600 – 64 Bit, Subversion 1.7.8

SVN服务端:VisualSVN Server Manager Version: 2.5.9

3月 252013
 

如果你只有一个有线路由器,手机无法通过wifi上网,或者你在公司没有无线网络,那么你可以通过以下方法创建一个自己的无线网络来使用了
前提:电脑有无线网卡,Windows 7系统
方法:
1. 以管理员身份运行command窗口
2. 输入以下命令netsh wlan set hostednetwork mode=allow ssid=bcoderwifi key=123456,其中
mode=allow allow表示为允许
ssid=bcoderwifi bcoderwifi为你要创建的无线网络的名称
key=12345678 12345678为访问无线网络时需要用到的密码,此密码最低为8位,否则创建失败


执行上述命令后,在你的网络连接里会多了一个无线网络连接
3. 打开你的网络连接,在“本地连接”上右键,选择属性菜单,在共享标签页中,选择共享此连接,在下面的列表框中选择刚创建的那个无线连接,点击确定关闭窗口


4. 以管理员身份打开command窗口,输入netsh wlan start hostednetwork,这时你的无线网络就建立成功了,用你的手机就可以搜索到此无线连接了
不再使用此无线网络时可以通过以下命令来关闭无线网络netsh wlan stop hostednetwork

 

3月 222013
 

When we begin to run a android application, eclipse sometimes gives an “The connection to adb is down” error, just like below message.

[2013-03-22 22:08:02 – testapp] The connection to adb is down, and a severe error has occured.
[2013-03-22 22:08:02 – testapp] You must restart adb and Eclipse.
[2013-03-22 22:08:02 – testapp] Please ensure that adb is correctly located at ‘E:android-sdkplatform-toolsadb.exe’ and can be executed.

At before, I restart computer to fix the problem. But now, I get a faster solution for this message, copy the adb path in error message, here is “E:android-sdkplatform-toolsadb.exe”, and paste in the address bar of an explorer or paste in the textbox of Run window(press WIN+R key to open it) and press enter button to run adb once. And then eclipse works well.

If this does not work, kill adb.exe process in task manager, and resatrt eclipse.

If the problem is still exist, you should restart your computer.

复制错误信息中adb的路径,在这里是E:android-sdkplatform-toolsadb.exe,然后粘贴到文件夹地址栏或者运行窗口中,执行adb.exe一次即可解决错误。

如果上面这样不行的话,在任务管理器中结束adb.exe,然后重新启动Eclipse.

如果还不行就只能重新启动你的系统了。

 Posted by on 2013-03-22
3月 122013
 

 

2月 242013
 

原来一直在想,既然手机都有了无线网络或者蓝牙技术,为什么调试的时候还需要用数据线来弄,来回插拔麻烦不说,还得一直拖着个数据线。前几天在网上搜罗了一下,终于找到可以省掉数据线而用Wifi来调试的方法了。

据说在手机或者平板没有root的情况下也可以实现Wifi调试,但是笔者试验未成功,但是还是把办法来讲一下吧。

测试环境:手机HTC EVO 3d(HTC g17),Android版本4.0.3

没有Root系统时进行wifi连接调试的办法:

1、需要先插上数据线
2、打开一个命令行窗口,将目录切换到android-sdkplatform-tools目录下,执行adb tcpip 5555,将adb的连接方式切换到wifi
3、假设你手机的ip地址为192.168.0.100,在命令行窗口中执行adb connect 192.168.0.100,如果后面不加”:portnumber”则默认端口号为5555,如果成功会显示connected to 192.168.0.100:5555
4、使用adb devices命令可以显示已连接的设备。192.168.0.100:5555      device表示连接成功,192.168.0.100:5555      offline表示连接有问题。
5、如果需要用usb进行调试则执行adb usb命令

本人用上述方法未能成功连上wifi调试,没办法只能把手机系统root

Root后进行wifi连接调试的办法:

1、在手机上下载adbWireless,打开并开启wifi调试
2、 打开一个命令行窗口,将目录切换到android-sdkplatform-tools目录下,执行adb tcpip 5555,将adb的连接方式切换到wifi
3、 假设你手机的ip地址为192.168.0.100,在命令行窗口中执行adb connect 192.168.0.100,如果后面不加”:portnumber”则默认端口号为5555,如果成功会显示connected to 192.168.0.100:5555
4、使用adb devices命令可以显示已连接的设备。192.168.0.100:5555      device表示连接成功,192.168.0.100:5555      offline表示连接有问题。
5、如果需要用usb进行调试则执行adb usb命令

Eclipse插件支持

有一个插件可以用在Eclipse中以快速连接wifi调试,插件地址为http://ppareit.github.com/AdbConnect/,安装方法为打开菜单“帮助-〉安装新软件”,输入http://ppareit.github.com/AdbConnect/做为更新站点,安装完毕后在菜单“窗口-〉首选项-〉Android-〉Adb Connect”中设置手机的ip地址和端口号,在工具栏上会多一个图标按钮用于快速连接