随手记(二)

首先一个随手记app需要一个登陆注册功能,而androidstudio自带的sqllite就起到了很强大的作用。

1.用户登陆界面

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/login_layout">
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="用户名:"
             />
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入用户名"
            android:id="@+id/count" />
    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="密    码:"
         />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入密码"
        android:id="@+id/pwd"/>
    </LinearLayout>
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center">
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="登录"
            android:layout_marginRight="100sp"
            android:id="@+id/login" />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="注册"
            android:id="@+id/regin" />
</LinearLayout>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="登录状态:"
       />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:id="@+id/state" />
</LinearLayout>

2.用户登录activity

public class LoginActivity extends AppCompatActivity {
    private Button reg;
    private Button login;
    private EditText count;
    private EditText pwd;
    private TextView state;
    private List<User> userList;
    private List<User> dataList = new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        reg= (Button) findViewById(R.id.regin);
        login= (Button) findViewById(R.id.login);
        count= (EditText) findViewById(R.id.count);
        pwd= (EditText) findViewById(R.id.pwd);
        state= (TextView) findViewById(R.id.state);
        reg.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String name=count.getText().toString().trim();
                String pass=pwd.getText().toString().trim();
                User user=new User();
                user.setUsername(name);
                user.setUserpwd(pass);
                int result=SqliteDB.getInstance(getApplicationContext()).saveUser(user);
                if (result==1){
                    state.setText("注册成功!");
                }else  if (result==-1)
                {
                    state.setText("用户名已经存在!");
                }
                else
                {
                    state.setText("!");
                }

            }
        });
        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String name=count.getText().toString().trim();
                String pass=pwd.getText().toString().trim();
                int result=SqliteDB.getInstance(getApplicationContext()).Quer(pass,name);
                if (result==1)
                {
                        state.setText("登录成功!");
                }
                else if (result==0){
                    state.setText("用户名不存在!");

                }
                else if(result==-1)
                {
                    state.setText("密码错误!");
                }
            }
        });
    }
}

3.用户注册主界面

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:weightSum="1">

    <EditText
        android:drawableLeft="@android:drawable/ic_menu_myplaces"
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:inputType="textPersonName"
        android:ems="10"
        android:id="@+id/resetpwd_edit_name"
        android:layout_alignParentTop="true"
        android:hint="请输入您的用户名"
        android:layout_alignLeft="@+id/resetpwd_edit_pwd_new"
        android:layout_alignStart="@+id/resetpwd_edit_pwd_new"
        android:layout_alignRight="@+id/resetpwd_edit_pwd_new"
        android:layout_alignEnd="@+id/resetpwd_edit_pwd_new" />

    <EditText
        android:drawableLeft="@android:drawable/ic_lock_idle_lock"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        android:inputType="textPassword"
        android:ems="10"
        android:id="@+id/resetpwd_edit_pwd_old"
        android:hint="请输入您的密码"
        android:layout_below="@+id/resetpwd_edit_name"
        android:layout_alignRight="@+id/resetpwd_edit_name"
        android:layout_alignEnd="@+id/resetpwd_edit_name"
        android:layout_alignLeft="@+id/resetpwd_edit_name"
        android:layout_alignStart="@+id/resetpwd_edit_name" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="取消"
        android:id="@+id/register_btn_cancel"
        android:textSize="20dp"
        android:background="#f71818"
        android:layout_below="@+id/register_btn_sure"
        android:layout_alignLeft="@+id/register_btn_sure"
        android:layout_alignStart="@+id/register_btn_sure"
        android:layout_marginTop="10dp" />

    <EditText
        android:drawableLeft="@android:drawable/ic_lock_idle_lock"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        android:inputType="textPassword"
        android:ems="10"
        android:id="@+id/resetpwd_edit_pwd_new"
        android:layout_below="@+id/resetpwd_edit_pwd_old"
        android:layout_centerHorizontal="true"
        android:hint="请确认您的密码" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="确定"
        android:id="@+id/register_btn_sure"
        android:textSize="20dp"
        android:background="#1cf718"
        android:layout_below="@+id/resetpwd_edit_pwd_new"
        android:layout_alignLeft="@+id/resetpwd_edit_pwd_new"
        android:layout_alignStart="@+id/resetpwd_edit_pwd_new"
        android:layout_marginTop="20dp" />

</RelativeLayout>

4.用户注册activity

public class Register extends AppCompatActivity {
    private EditText mAccount;
    private EditText mPwd;
    private EditText mPwdCheck;
    private Button mSureButton;
    private Button mCancelButton;
    private UserDataManager mUserDataManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.register);
        mAccount = (EditText) findViewById(R.id.resetpwd_edit_name);
        mPwd = (EditText) findViewById(R.id.resetpwd_edit_pwd_old);
        mPwdCheck = (EditText) findViewById(R.id.resetpwd_edit_pwd_new);

        mSureButton = (Button) findViewById(R.id.register_btn_sure);
        mCancelButton = (Button) findViewById(R.id.register_btn_cancel);

        mSureButton.setOnClickListener(m_register_Listener);      //注册界面两个按钮的监听事件
        mCancelButton.setOnClickListener(m_register_Listener);
        if (mUserDataManager == null) {
            mUserDataManager = new UserDataManager(this);
            mUserDataManager.openDataBase();
        }
    }
    View.OnClickListener m_register_Listener = new View.OnClickListener() {    //不同按钮按下的监听事件选择
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.register_btn_sure:                       //确认按钮的监听事件
                    register_check();
                    break;
                case R.id.register_btn_cancel:                     //取消按钮的监听事件,由注册界面返回登录界面
                    Intent intent_Register_to_Login = new Intent(Register.this,Login.class) ;    //切换User Activity至Login Activity
                    startActivity(intent_Register_to_Login);
                    finish();
                    break;
            }
        }
    };
    public void register_check() {                                //确认按钮的监听事件
        if (isUserNameAndPwdValid()) {
            String userName = mAccount.getText().toString().trim();
            String userPwd = mPwd.getText().toString().trim();
            String userPwdCheck = mPwdCheck.getText().toString().trim();
            //检查用户是否存在
            int count=mUserDataManager.findUserByName(userName);
            //用户已经存在时返回,给出提示文字
            if(count>0){
                Toast.makeText(this, getString(R.string.name_already_exist, userName),Toast.LENGTH_SHORT).show();
                return ;
            }
            if(userPwd.equals(userPwdCheck)==false){     //两次密码输入不一样
                Toast.makeText(this, getString(R.string.pwd_not_the_same),Toast.LENGTH_SHORT).show();
                return ;
            } else {
                UserData mUser = new UserData(userName, userPwd);
                mUserDataManager.openDataBase();
                long flag = mUserDataManager.insertUserData(mUser); //新建用户信息
                if (flag == -1) {
                    Toast.makeText(this, getString(R.string.register_fail),Toast.LENGTH_SHORT).show();
                }else{
                    Toast.makeText(this, getString(R.string.register_success),Toast.LENGTH_SHORT).show();
                    Intent intent_Register_to_Login = new Intent(Register.this,Login.class) ;    //切换User Activity至Login Activity
                    startActivity(intent_Register_to_Login);
                    finish();
                }
            }
        }
    }
    public boolean isUserNameAndPwdValid() {
        if (mAccount.getText().toString().trim().equals("")) {
            Toast.makeText(this, getString(R.string.account_empty),
                    Toast.LENGTH_SHORT).show();
            return false;
        } else if (mPwd.getText().toString().trim().equals("")) {
            Toast.makeText(this, getString(R.string.pwd_empty),
                    Toast.LENGTH_SHORT).show();
            return false;
        }else if(mPwdCheck.getText().toString().trim().equals("")) {
            Toast.makeText(this, getString(R.string.pwd_check_empty),
                    Toast.LENGTH_SHORT).show();
            return false;
        }
        return true;
    }
}
时间: 2025-02-01 13:57:26

随手记(二)的相关文章

HTML+CSS+JS自学手记二

今天学习的标签主要是用于与浏览者交互方面的,复杂性感觉也已经比之前的有所提高,不过学习下来也不算感觉难,就是要记的东西又多了,不过多练练应该问题不大. <a>标签,链接到另一页面.语法结构为: <a href=“目标网址” title=“鼠标滑过时提示的文本”>链接显示的文本</a> 有时候需要在新的浏览器窗口打开链接,可以这样实现: <a href=“目标网址” target=”_blank”> 另外,使用mailto可以在网页链接Email地址,语法示例

Spring-AOP源码分析随手记(二)

这次来分析下切面的执行过程. 1.怎么看? 怎么开始看源码呢?就直接从被增强的方法调用那里打断点,看看怎么执行的: 然后就来到了这: 2.初步分析 里面有段: if (this.advised.exposeProxy) { // Make invocation available if necessary. oldProxy = AopContext.setCurrentProxy(proxy); setProxyContext = true; } 就是上篇文章讲到的注解配置暴露代理对象,放到A

MyBatis学习手记(二)MyBatis缓存机制

MyBatis学习手记二 前:MyBatis官方学习(中文)文档 http://mybatis.github.io/mybatis-3/zh/index.html 一,首先,要使用MyBatis必须使用官方提供的MyBatis的JAR包              链接:https://github.com/mybatis/mybatis-3/releases 这里使用的数据库是MySQL,所以还需要Mysql的驱动包. 二,看MyBatis官方介绍,说MyBatis支持一级缓存,二级缓存.这里才

随手记一次利用开源zxing生成带嵌入logo的二维码图片

之前就在项目里面用过zxing生成二维码,最近另一个项目同样需要用到二维码,故重新在学了学利用zxing生成二维码 接下来先做准备工作了,因为我是用vs2013上开发的,故选择了.net4.5版本的zxing.dll.另外准备了一张准备嵌入的图片,代码如下: 1 using System; 2 using System.Collections; 3 using System.Collections.Generic; 4 using System.Drawing; 5 using System.L

搜索引擎手记(二)之爬虫的开发

2015年3月23日(星期一) 晴.南风 今天数据组开会说爬虫已经开发完毕,在尝试爬网站.由于我们采集的网站,网址都是固定的,并且爬虫网页深度为3.不需要像heritrix这些通用爬虫那么强大的功能. 爬虫主要采用了httpclient和htmlparse两个Java库,爬虫的架构思路借鉴了下面的思路. 一.        架构图 那里搜网络爬虫框架主要针对电子商务网站进行数据爬取,分析,存储,索引.  爬虫:爬虫负责爬取,解析,处理网页的内容 数据库:存储网页信息 索引:网页内容的指纹信息 T

开发手记——基于XMPP的Android即时通讯APP(二)

隔了几天,把应用的登录.注册部分做的比较完善了,当然这只是个人感觉哈. 今天要说的,都是干货! 首先,没有大片代码:其次,在网上一般找不到:最后,真的让你节约开发时间!这也是为什么时隔好几天才会发第二篇连载. 既然说,没有大片代码,一般的登录.注册流程这里就不提了,百度谷歌一搜一大堆,而且基本都能用.这里说几点注意 [一]关于后台服务: 官方的建议,要使用"START_STICKY"这种类型的后台服务.为什么要用这种服务,官方的说法很明朗: 这点和Android Developer官网

linux操作mysql命令快速手记——让手指跟上思考的速度(二)

这一篇是<mysql内建命令快速手记>的姐妹篇,废话不再赘述,直接上干货,跟老铁慢慢品 1.mysql -hlocalhost -uroot -proot,-h,-u,-p分别代表ip,username,password,老生常谈的命令,连接mysql 2.systemctl start mysqld.service 启动mysql服务的命令,注意看走眼了,是mysqld,d是demon的意思,守护 3.systemctl status mysqld.service 查看mysql服务状态的命

随手记——神奇的现象,二维数组

做一道DP的题目,需要标记二维数组中,以某个点为中心边上的八个点(象棋中的"马"下一步可走的位置),然后是这样写的. void make_mark(int x,int y) { sign[x - 1][y - 2] = 1; sign[x - 1][y + 2] = 1; sign[x + 1][y + 2] = 1; sign[x + 1][y - 2] = 1; sign[x + 2][y - 1] = 1; sign[x + 2][y + 1] = 1; sign[x - 2][

Aspnet前后端分离项目手记(二)关于token认证

在前后端分离的项目中,首先我们要解决的问题就是身份认证 以往的时候,我们使用cookie+session,或者只用cookie来保持会话. 一,先来复习一下cookie和session 首先我们来复习一下在aspnet中cookie和session的关系,做一个简单试验 这是一个普通的view没有任何处理 可以看到,没有任何东西(cookie),然后当我们写入一个session之后 \ 会发现多了一个名为ASP.NET_SessionId的cookie.我们都知道在aspnet中,session