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. C语言函数以及函数的使用
  2. Java Android 线程池
  3. android 线程(一)
  4. 【Android 初学】11、关于Android当中的线程(初级)
  5. Android多线程同步转异步方法总结
  6. 线程安全
  7. Android学习札记29:对线程更新UI界面的一些理解(2)
  8. Android的线程和线程池--《Android开发艺术探索》阅读笔记——第
  9. android 调用draw(canvas) 函数自动退出

随机推荐

  1. DeepMind星际争霸AI登上Nature,超越99.8%活
  2. 在图像生成领域里,GAN这一大家族是如何生
  3. 顶会抄顶会:SIGIR 2019论文被爆抄袭,部分内
  4. ECC内存与普通内存之间的区别
  5. Shell 流程控制
  6. VB.NET和Python有什么不同?前景分析!
  7. 如何提取视频声音,将视频中的音乐提取出来
  8. 【金三银四】Java中间件面试题(2021最新版
  9. Scikit-learn的六大功能!Python学习
  10. 阿里云盘进场,安全星球何以成为云盘界的一