android 一些总结 1.2-1.10

今天主要解决的是android端的滑动条和listview的问题。
android端对tomcat的请求,没有写在线程内,一直卡在请求函数这,最后建立一个线程,问题解决。

public void add_finish(View v) {   //button 添加onClick属性        new Thread(new Runnable() {                   //有关数据库操作要放在线程中做            public void run() {                 good = new Goods("" + Gname.getText(),                        Integer.parseInt("" + Gprice.getText()),                        Integer.parseInt("" + Gamount.getText()), ""                                + Gdate.getText(), "" + Gperson.getText());                Log.e("add_finish map ", "add_finish=" + good.getGname());                Operaton operaton = new Operaton();                List<Goods> list = new ArrayList<Goods>();                list.add(good);                WriteJson writeJson = new WriteJson();                String jsonString = writeJson.getJsonData(list);                Log.e("add_finish jsonString ", "jsonString=" + jsonString);                String result = operaton.UpData("Add", jsonString);                Message msg = new Message();                System.out.println("result---->" + result);                msg.obj = result;                handler1.sendMessage(msg);            }        }).start();                //必须加start    }

(注意线程的使用,后面要有start(); 线程才启动)

今天还犯了个低级的错误。startActivity()函数,和StartAcitivityForResult()函数搞混。startActivity()只进行启动,不会将消息传递回之前的activity 中;而StartAcitivityForResult()函数使用后,会调用之前的activity中的 onActivityResult()方法。

我一直使用startActivity()函数,一直错。 我也算写android写了不少的人,这种错误也在犯。

参考http://blog.csdn.net/sunchaoenter/article/details/6612039

关于 Parcelable的使用:

当需要在activity之间进行传递类的时候,可以让类继承Parcelable,重要的是需要重写creator。如:

public class Goods implements Parcelable{    private  int  id=0;    private  String Gname="";    private  int Gprice=0;    private  int Gamount=0;    private  String Gdate="";    private  String Gperson="";    public Goods() {        super();    }    @Override    public int describeContents() {        // TODO 自动生成的方法存根        return 0;    }    @Override    public void writeToParcel(Parcel arg0, int arg1) {        // TODO 自动生成的方法存根        arg0.writeInt(id);        arg0.writeString(Gname);        arg0.writeInt(Gprice);        arg0.writeInt(Gamount);        arg0.writeString(Gdate);        arg0.writeString(Gperson);    }      public static final Parcelable.Creator<Goods> CREATOR = new Parcelable.Creator<Goods>()                  {                     public Goods createFromParcel(Parcel in)                      {                         return new Goods(in);                     }                     public Goods[] newArray(int size)                      {                         return new Goods[size];                     }                 };    public Goods(Parcel in) {        // TODO 自动生成的构造函数存根        id=in.readInt();        Gname=in.readString();        Gprice=in.readInt();        Gamount=in.readInt();        Gdate=in.readString();        Gperson=in.readString();    }

参考blog:
[http://www.cnblogs.com/renqingping/archive/2012/10/25/Parcelable.html]

技巧:

在xml文件中,对button 添加onClick属性,可以直接在activity中调用。如:

        <Button            android:id="@+id/login_reback"            android:layout_width="70dp"            android:layout_height="wrap_content"            android:layout_centerVertical="true"            android:background="@drawable/title_btn_back"            android:onClick="login_back"            android:text="返回"            android:textColor="#fff"            android:textSize="14sp" />
 public void add(View v) {             //content    }  

即可使用。

关于handler的用法:
使用它主要是因为在子线程中不能够刷新UI界面,必须由主线程进行调用。

最简单来讲的话,只传递消息。 message.what=12;

第二种传递类,简单来说就是传递对象:

new Thread(new Runnable() {                        public void run() {                            Operaton operaton=new Operaton();                            String result="";                            result= operaton.checkusername("Check", str);                            System.out.println("result:"+result);                            Message message=new Message();// message.what=12;                            message.obj=result;                            handler.sendMessage(message);                        }                    }).start();
    Handler handler=new Handler()    {        @Override        public void handleMessage(Message msg) {            String msgobj=msg.obj.toString();            System.out.println(msgobj);            System.out.println(msgobj.length());            if (msgobj.equals("t")) {                  Toast.makeText(Register.this, "用户名已使用,请更换", 0).show();            }               else             {                                       Toast.makeText(Register.this, "用户可以使用", 0).show();            }            super.handleMessage(msg);        }       };

reference:
http://blog.csdn.net/aaa2832/article/details/7773220
http://www.3lian.com/edu/2012/11-19/44762.html

更多相关文章

  1. Android多媒体播放器源码解析(stagefright框架)
  2. Android中对Handler用法的总结
  3. Android(安卓)Ams浅析
  4. Android之Handler用法总结
  5. Android中有关数据库SQLite的介绍
  6. Android架构分析之LOG模块
  7. Android培训HandlerThread的使用及源码解析
  8. Android(安卓)中的WiFi学习笔记
  9. Java Android(安卓)线程池

随机推荐

  1. android相机如何只显示处理后的图像以及
  2. Android选择图片
  3. 超酷的计步器APP(一)——炫酷功能实现,自定
  4. Android(安卓)中的危险权限详细整理
  5. Android(安卓)版本更新签名冲突的问题以
  6. 谁能想到,Android外包工作三年,能入职某大
  7. Android应用《撕开美女衣服》的实现过程
  8. 国产神器天语Android双核手机W700线下赏
  9. Supernote 讓你在華碩的平板上做出不少好
  10. Android的px、dp和sp等单位的区别详解