一安卓服务端的搭建
Eclipse+myeclipse+tomcat+mysql
1. 按钮事件的添加
代码:
mysure.setOnClickListener(btnsure);
private Button.OnClickListenerbtnsure=newButton.OnClickListener(){
public void onClick(View v){
myname.setText("你好!"+myname.getText().toString());
}
};
2. 服务器连接不上mysql数据库的问题
将数据库换做access数据库就连上了。
3. 连接服务器取不到数据
privatestatic final String NameSpace="http://db.upc";
String methodName="ConnectDb";//方法名
HttpTransportSE ht = newHttpTransportSE(serviceurl);//创建HttpTransportSE对象,并指定WSDL文档的URL
try{
ht.call(NameSpace+methodName,envelope);
ht.call函数中的第一个参数是namespace+methodname;
开始时是null.
SoapPrimitive response =(SoapPrimitive) envelope.getResponse();//使用getResponse方法获得WebService方法的返回结果
result="密码是:"+response.toString();
z这个地方本来用的是SoapObject类,也是导致取不到数据的原因之一,所以改用SoapPrimitive,原因参见下面的博客。
http://www.cnblogs.com/gfqFighting/archive/2012/12/06/2804671.html
4. 用toast弹出一个提示框的时候无法弹出,
忘记在toast.maketext()加.show()导致,加上.show()就好了。
5.
Android手机/平板连接局域网访问局域网电脑Web服务器
http://blog.csdn.net/huazai963184709/article/details/12906085
6.不同的activity之间共享变量
http://www.cnblogs.com/wangsx/archive/2012/05/23/2514772.html
用通过Application Context进行变量共享
7.android中如何调整嵌套的一个linearlayout与与其上边的一个控件的间距。
在要调整的那个linearlayout中加上如下代码
android:layout_marginTop="60dp",
调整的值的大小可自行调整。
8.在给listview添加响应函数时程序奔溃
用arg2参数来判断点击了那个内容,第一条内容对应得arg2参数是0,依次类推。
lv2.setOnItemClickListener(new OnItemClickListener(){
publicvoid onItemClick(AdapterView<?>arg0, View arg1,int arg2, long arg3) {
if(arg2==0){//点击了设置当前位置
Toast.makeText(ListOfSettings.this,""+arg2, Toast.LENGTH_SHORT).show();
}
if(arg2==1){//点击了拍摄实景
Intent it=newIntent();
it.setClass(ListOfSettings.this, UpLoadingPhoto.class);
startActivity(it);
}
if(arg2==2){//点击了关于
Intent it=newIntent();
it.setClass(ListOfSettings.this, AboutSmartbus.class);
startActivity(it);
}
}
});
9. The method makeText(Context,CharSequence, int) in the type Toast is not applicable for the arguments (newAdapterView.OnItemClickListener(){}, String, int)
在这里加入activity的名字+“.” |
Toast.makeText(this,""+arg2,Toast.LENGTH_SHORT).show();
10.用intent的putExtra函数在activity间传值的方法。
假设有a,b俩activity,a中有值要传到b中,在a中这样做:
Intent it=newIntent();it.setClass(a.this,b.class);it.putExtra(“x”,”hello”);
startActivity(it);
在b中这样做:
Intent intent =getIntent();
/*取出Intent中附加的数据*/
String hello = intent.getStringExtra("x");
实现传值。
11.BASE64Decoder cannot be resolved to a type
引入common-codec-1.5.jar包
在package下加入import语句
import org.apache.commons.codec.binary.Base64;
调用时用法如下:
byte[] buffer=Base64.decodeBase64(image);
12.点击拍照按钮后,完成拍照确认后不能显示在imageview且程序崩溃
首先代码问题:
protected void onActivityResult(int requestCode,int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==CAMERA_RESULT&&resultCode==Activity.RESULT_OK) {
try{
myBitmap = BitmapFactory.decodeFile(mPhotoPath);
if(null !=myBitmap ){
myview.setVisibility(View.VISIBLE);
myview.setImageBitmap(myBitmap);
myview.setScaleType(ScaleType.FIT_CENTER);
}
}catch ( Exception e ){
e.printStackTrace();
}
}
}
代码是从网上拷贝的,差别都不大
然后就是从网上得知,要将AndroidManifest.xml中的android:targetSdkVersion注释掉。
注释方法:<!-- android:targetSdkVersion="18" -->
然后就调试成功!
13[ERROR]org.apache.commons.codec.binary.Base64.decodeBase64(Ljava
问题原因是:D:\Tomcat\webapps\axis2\WEB-INF\lib中已经有commons-codec-1.3.jar,所以用commons-codec-1.5.jar将其替换就好了。
14.用new AlertDialog.Builder(ListOfSettings.this)
.setIcon(R.drawable.alert_dialog_icon)
.setTitle(R.string.alert_dialog_text_entry)
.setView(textEntryView)
.setPositiveButton(R.string.alert_dialog_ok,new DialogInterface.OnClickListener() {
publicvoid onClick(DialogInterface dialog, int whichButton) {
/* User clicked OK so do some stuff */
ConnectService cs=new ConnectService();
cs.setIpAddress(etx.getText().toString());
Toast.makeText(ListOfSettings.this,"ipv4地址设置成功", Toast.LENGTH_SHORT).show();
}
})
.setNegativeButton(R.string.alert_dialog_cancel,new DialogInterface.OnClickListener() {
publicvoid onClick(DialogInterface dialog, int whichButton) {
/* User clicked cancel so do some stuff */
}
})
.create();
的方法,但是点击item后没有反应,到网上查后,发现是没加
alertDialog.show()方法。
15.在用android的alertdialog时,setPositiveButton这个方法里面想取得EditText的值,却报空指针异常java.lang.NullPointerException
final View textEntryView = factory.inflate(R.xml.alert_dialog, null);
etx=(EditText)textEntryView.findViewById(R.id.ipinfo_edit);//这句出错,应该使用textEntryView.findViewById
原因:默认的findViewById是你当前activity的对象,而你这里父对象应该是dialog,不应该用默认的findViewById
16.could not find method org.apache.commons.codec.binary.Base64.decodeBase64
byte[]buffer = android.util.Base64.decode(ret,android.util.Base64.DEFAULT);
17.Theprocessing instruction target matching "[xX][mM][lL]" is not allowed
<?xmlversion="1.0" encoding="UTF-8"?>前面不要有任何其他字符,如空格、回车、换行这些否则就会出现上面的异常。
18.安卓客户端怎么接收webservice返回的字符串数组。
首先在服务器端将要返回给客户端的字符串数组转换为字符串,要加上标记,以便在客户端解析。
服务器端代码如:
public String returnstr(){
String mystr=null;
StringBuffer sb=new StringBuffer();
String []str={"1","2","3","4","5"};
for (int i=0;i<str.length;i++){
sb.append(str[i]+",");
}
mystr=sb.toString();
return mystr;
}
在客户端将获取的字符串解析为字符串数组
代码如下:
private String[] parseString(String result){
String[]ss=new String[10];
ss=result.split(",");
return ss;
}
19.java将字符数组转换为字符串
String[] ary = {"abc", "123", "45"};
StringBuffer sb = new StringBuffer();
for(int i = 0; i < ary.length; i++){
sb.append(ary[i]);
}
String newStr = sb.toString();
20.java 获取文件夹下的文件名,并转换为字符串。
先获取文件列表,然后将文件数组.toString()就转换为字符串了,好吧好简单。
File f1=new File("D:\\Tomcat\\webapps\\images");
File[] fx=f1.listFiles();
//String ss=null;
String []ss=new String[100];
System.out.println(fx.length);
for(int i=0;i<fx.length;i++){
ss[i]=fx[i].toString();
System.out.println(fx[i]+"\n");
System.out.println(ss[i]+"\n");
}
21.listview显示sd卡中的图片
SimpleAdapter中能放置drawable中的图片,如果想放置其它来源的图片(如:SD卡、数据库、网络图片),那么需要重写它的bindView方法,这是个private方法,因此还需要重写所以调用它的方法
22.java.lang.OutOfMemoryError
在下载的时候,在循环中在图片保存完毕后,将image数组清空.
如红色代码所示。这样下载过程就不会使程序奔溃了。
代码:
for (int i=0;i<photoName.length;i++){
image[i]=cs.downloadphoto(cityName,photoName[i]);
try{
byte [] buffer=android.util.Base64.decode(image[i],android.util.Base64.DEFAULT);
Filedestdir=new File(photoPath);
if(!destdir.exists())destdir.mkdir();
fos= new FileOutputStream(new File(destdir,photoName[i]));//保存图片
fos.write(buffer);
image[i]=null;
System.gc();//处理内存溢出
fos.flush();
fos.close();
}
catch(Exception e){
e.printStackTrace();
returnfalse;
}
}
在显示时程序奔溃
23.拍照上传时出现java.lang.NullPointerException:file==null,程序崩溃。
由于 bitmap.recycle()引起
24. Android导入工程出现unable to get system library for the project
可能是由于sdk版本不兼容导致的。假设引入的工程sdk版本是7,而自己eclipse关联的sdk中没有版本7,便会出现找不到库的错误,此时需要更改。
右击工程--properties--Android,对话框右侧会列出各个sdk版本,点击选择就可以了,这种方式要比第一种方式好,因为会自动在default.properties文件中填写sdk版本名称,
25. WARNING: Application does not specify an API levelrequirement!
修改AndroidManifest.xml,添加sdkVersion
26.
Androidjava.io.IOException: Permission denied解决
因为我是直接将手机用USB线连接电脑进行调试,这也恰恰是问题所在!!!我们都知道,当手机用USB线连接电脑时,SD卡上的数据是禁止访问的,所以你以这种方式运行你的程序,你就当然不具有读写SD卡地权限了,自然无法进行IO操作
27.完美解决在点击不能连续拍摄多张照片然后上传的问题
就是在上传按钮点击事件中的函数中添加bitmap.recycle();函数,意思就是在上传照片完毕后,回收内存。如红色代码所示。
代码:
public void uploadphoto(){//将拍的照片通过Base64编码上传到服务器
ConnectService cs=new ConnectService();
try{
FileInputStreamfis=new FileInputStream(mPhotoPath);
System.out.println(mPhotoPath);
ByteArrayOutputStreambaos=new ByteArrayOutputStream();//字节数组输出流作为目的地。
byte [] buffer=newbyte[8196];
int count=0;
while((count=fis.read(buffer))>=0){
baos.write(buffer,0,count);
}
StringuploadBuffer=new String(Base64.encodeBase64(baos.toByteArray()));
load_result=cs.uploadPhoto(etx_loaction.getText().toString(),getPhotoFileName(), uploadBuffer);//调用webservice方法,上传照片
fis.close();
}
catch(FileNotFoundException e){
e.printStackTrace();
}
catch(IOException e){
e.printStackTrace();
}
bitmap.recycle();//上传后回收。
}
28. access表中第一列设置为自动编号,那在insert的时候对该列怎么处理
'指定一下
sql = "insert into 20001(name,date) values('quanquan','" & Date & "')"
29. Android处理程序(listview)出现NullPointerException错误
自己写一个listview的布局xml文件,就解决了。
30.sqlite数据库中文乱码
请问有没有办法更改 windows 下 cmd(dos) 编码方式 将其改为UTF-8
2009-11-26 12:09寂寞的程序员 | 分类:Windows | 浏览4871次
请问有没有办法更改 windows 下 cmd(dos) 编码方式 将其改为UTF-8?
chcp 命令, chcp 65001 就是换成UTF-8代码页 chcp 936 可以换回默认的GBK chcp 437 是美国英语
31. android 项目中出现红色感叹号的解决方法
引入工程中的第三方jar包,是0kb,导致出现问题。
32. Caused by: java.lang.ClassCastException:android.widget.ImageButton
是同一个控件在XML中和JAVA文件中类型不一致导致的
32. android 显示多张图
用android gidview 控件来显示多张图片。
33.The importandroid.widget.GridView conflicts with a type defined in the same file
定义的类名与anroid的类名相同了。改掉类名。
34. Default buffer size used in BufferedInputStreamconstructor. It would be better to be explicit if an 8k buffer/resolveUrifailed on bad bitmap uri:android.graphics.Bitmap@48394288
用gridview显示sd卡中的图片不成功,改用自定义的一个继承了simpleadapter的类,然后就显示成功。
35.android 去掉标题栏
1、在代码中实现:
在此方法setContentView(R.layout.main)之前加入:
requestWindowFeature(Window.FEATURE_NO_TITLE);标题栏就没有了。
2、在AndroidManifest.xml中实现:
注册Activity时加上如下的一句配置就可以实现。
<activity android:name=".Activity"
android:theme="@android:style/Theme.NoTitleBar"
></activity>
36.GridView添加响应事件
gridView.setOnItemClickListener(newOnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View v, int position, longid)
{
37.在android虚拟机中按钮能响应,安装到手机上后,按钮不能响应
原因:虚拟机和手机android版本不一致,导致在虚拟机中能运行的程序不能在手机中运行,将程序中的过时的api改为最新版本的,就好了.
代码:
Old:API:proDialog.setButton("cancel",new DialogInterface.OnClickListener() {
New:proDialog.setButton(BUTTON_NEGATIVE,"cancel",new DialogInterface.OnClickListener() {
38. java.sql.SQLException:No data found
原因:access不能在一个字段上连续多次调用 rs.getString("字段名"),你需要先定义一个变量保存
39.ANDROID SQLITE 根据时间倒序查询
select * from Page_cache ORDER By newsDate desc
39. ADB server didn't ACK
http://jingyan.baidu.com/article/454316aba27e49f7a7c03ab1.html
40.android显示百度地图显示格子,没有地图。
首先<meta-dataandroid:name="com.baidu.lbsapi.API_KEY"android:value="ttAmE6K4dSZmXCB3nCizcU1S">
</meta-data>要放在</application>中
其次换一个key.(重新申请一个)