Android之购物车框架

登陆LoginActivity:

package net.shop.activity;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpRequest;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.cookie.BasicClientCookie2;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import net.jiaxiang.R;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.content.Entity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class LoginActivity extends Activity  implements OnClickListener{

    private EditText eT_username,eT_password;
    private Button bt_login,but_reset_psd,but_register;
    //获取文本框的值
    private String username,password;
    //在主线程中是不能进行修改主屏幕的所以只有写在外面在进行调用
    private Handler handler=new Handler(){
        public void handleMessage(Message msg){
            super.handleMessage(msg);
            if(msg.what==0){
                //弹出提示框
                Toast.makeText(getApplicationContext(), "用户名和密码不正确!请从新输入!", Toast.LENGTH_LONG).show();
            }
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        //获取组件
        eT_username=(EditText) findViewById(R.id.eT_username);
        eT_password=(EditText) findViewById(R.id.eT_password);
        //登入商城
        bt_login=(Button) findViewById(R.id.but_login);
        //忘记密码
        but_reset_psd=(Button) findViewById(R.id.but_reset_psd);
        //注册商城
        but_register=(Button) findViewById(R.id.but_register);
        //获取用户名和密码
        //获取文本框中的内容 在进行转换成【字符串】类型trim():在去掉空格
        username=eT_username.getText().toString().trim();
        password=eT_password.getText().toString().trim();

        //点击事件
        bt_login.setOnClickListener(this);
        but_reset_psd.setOnClickListener(this);
        but_register.setOnClickListener(this);
    //注意程序在访问网络的时候必须是放在子线程中进行运行,因为连接网络和数据库比较慢,不放在子线程中就会造成主线程卡死

    new Thread(new Runnable() {
        public void run() {
            //点击事件
        //  bt_login.setOnClickListener(this);
        //  bt_login.setOnClickListener(bt_login);
        //调用实现这个网络加载在子进程中进行加载
        //  onClick(bt_login);

        }
    }).start();

}
    //控件点击事件
    @Override
    public void onClick(View v) {
        switch(v.getId()){
        case R.id.but_login:
            if(username==null || username.length()<=0){
                //获取焦点也就是重新让光标在用户名这里
                eT_username.requestFocus();
                eT_username.setError("用户名不能为空!");
                return;
            }else if (password==null || password.length()<=0) {
                //获取焦点也就是重新让光标在密码这里
                eT_password.requestFocus();
                eT_password.setError("密码不能为空!");
            }
            //http通信(向服务器发出请求,并获取响应)
            //创建HTTPClient实例
            HttpClient hpct=new DefaultHttpClient();

            //确定请求方法(post)
            HttpPost request=new HttpPost("http://192.168.147.22:8080/LoginServlet");
            //使用NameValuePair来保存客户端传递的参数,可以使用BasicNameValuePair来构造一个要被传递的参数,通过add方法把这参数加入到NameValuePair中
            List<NameValuePair>nvp=new ArrayList<NameValuePair>();
            nvp.add(new BasicNameValuePair("name", username));
            nvp.add(new BasicNameValuePair("pwd", password));

            try {
                //设置一个编码
                UrlEncodedFormEntity uefe=new UrlEncodedFormEntity(nvp,"GBK");
               request.setEntity(uefe);
               //执行
               HttpResponse response=hpct.execute(request);

            //   HttpEntity tpentity=response.getEntity();//方法一
               String entity=EntityUtils.toString(request.getEntity());//方法二
            //判断entity是“yes”或"no"
               if(entity.equals("yes")){
                   Intent intent=new Intent(LoginActivity.this,MainActivityB.class);
                   //开启跳转
                   startActivity(intent);
                   //关闭线程
                   LoginActivity.this.finish();
               }else{
                //发送消息;
                   Message msg=new Message();
                   msg.what=0;
                   //调用方法消息弹出提示框架
                   handler.sendMessage(msg);
               }
            //编码异常抛出
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                //所有的异常抛出
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }//
            break;
        case R.id.but_register:
            break;
        case R.id.but_reset_psd:
            break;
        }
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.login, menu);
        return true;
    }
}

  

时间: 2024-10-12 04:44:52

Android之购物车框架的相关文章

Android网络请求框架AsyncHttpClient实例详解(配合JSON解析调用接口)

最近做项目要求使用到网络,想来想去选择了AsyncHttpClient框架开进行APP开发.在这里把我工作期间遇到的问题以及对AsyncHttpClient的使用经验做出相应总结,希望能对您的学习有所帮助. 首先按照惯例先来简单了解一些AsyncHttpClient网络框架的一些知识. 1.简介 Android中网络请求一般使用Apache HTTP Client或者采用HttpURLConnect,但是直接使用这两个类库需要写大量的代码才能完成网络post和get请求,而使用android-a

Android兼容性测试框架(CTS)手册

了解老码农个人隐私,请看这里:http://www.koulianbing.com/?page_id=12 本文翻译自Android官方的CTS手册android-cts-manual-r4.pdf Android兼容性测试框架手册 1.为什么需要兼容性测试(以下称CTS)? 1.1.让APP提供更好的用户体验.用户可以选择更多的适合自己设备的APP.让APP更稳定. 1.2.让开发者设计更高质量的APP. 1.3.通过CTS的设备可以运行Androidmarket. 另外,CTS是免费的,而且

android 应用程序框架

在进行Android软件开发时,开发者所开发的Android应用程序都是通过应用程序框架来与Android底层进行交互的,所以开发中接触到最多的部分就是应用程序框架.在整合应用程序框架 中有4个重要的组件,介绍如下. Activities:一个Activities就表示一个程序的显示界面,在一个应用程序中可以包含多个Activities组件,每个Activities组件都拥有各自的生命周期. Intent:当多个应用程序之间需要互相跳转时,就通过Intent完成,开发者所开发的程序也可以利用In

来,咱们自己写一个Android的IOC框架!

到目前位置,afinal开发框架也是用了好几个月了,还记得第一次使用注释完成控件的初始化和事件绑定的时候,当时的心情是多么的兴奋- -代码竟然可以这样写!然后随着不断的学习,也慢慢的对IOC框架和注解反射等东西有了一点简单的了解,之前的一篇文章简单的介绍了一下Java的反射机制,今天的文章,就完成一个简单的,基于IOC的小Demo,让大家慢慢的对IOC有一点简单的了解. 首先,什么是IOC呢? 控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来

【FastDev4Android框架开发】RecyclerView完全解析之结合AA(Android Annotations)注入框架实例(三十)

(一).前言: 话说RecyclerView已经面市很久,也在很多应用中得到广泛的使用,在整个开发者圈子里面也拥有很不错的口碑,那说明RecyclerView拥有比ListView,GridView之类控件有很多的优点,例如:数据绑定,Item View创建,View的回收以及重用等机制.本系列文章会包括到以下三个部分: RecyclerView控件的基本使用,包括基础,进阶,高级部分,动画之类(点击进入) RecyclerView控件的实战实例(点击进入) RecyclerView控件集合AA

(转)android平台phonegap框架实现原理

(原文)http://blog.csdn.net/wuruixn/article/details/7405175 android平台phonegap框架实现原理 分类: Android2012-03-28 23:10 2919人阅读 评论(0) 收藏 举报 phonegap平台android框架apiblackberry 最近研究了下phonegap手机快速开发框架原理,重点探究了android平台上的phonegap框架源码,在参考cutesource写的phonegap源码分析后,更加深入理

Android tree应用框架

Tomcat源码学习前的准备工作 注:由于网上的帖子大部分没有配套的图片和错误的分析,所有费了半天劲整理了此篇博客,希望大家少走弯路吧 下面我们就开始我们的Tomcat源码学习之旅. 1. 下载Tomcat6.0的源代码 首先,我们得下载Tomcat6.0的源代码.Tomcat源代码的版本控制工具不是CVS,而是Subversion,如果您的机器上没有安装Subversion,请从http://subversion.tigris.org/servlets/ProjectDocumentList?

Android Framework应用框架层和HAL硬件抽象层以及Linux Kernel底层之间的关系

Android应用框架层和硬件抽象层以及底层之间的关系 1. JNI技术: (1).JNI技术简单的说就是在本地Java语言声明本地方法和加载动态链接库(.so文件) (2).动态链接库(.so文件)是由NDK编译C/C++文件而成的. 2. HAL层开发: (1).HAL是Hardware Abstraction Layer的简称.也称为硬件抽象层. (2).硬件访问服务是在Framework层实现的. (3).硬件访问服务是用Java语言实现的,硬件抽象层是用C++语言编写的.因此硬件访问服

Android网络通信Volley框架源码浅析(三)

尊重原创 http://write.blog.csdn.net/postedit/26002961 通过前面浅析(一)和浅析(二)的分析,相信大家对于Volley有了初步的认识,但是如果想更深入的理解,还需要靠大家多多看源码. 这篇文章中我们主要来研究一下使用Volley框架请求大量图片的原理,在Android的应用中,通过http请求获取的数据主要有三类: 1.json 2.xml 3.Image 其中json和xml的获取其实原理很简单,使用Volley获取感觉有点大财小用了,了解Volle