Android实现用户登录和注册界面

2023-11-15

       我们在做android项目时经常会用到用户登录,这里呈上实现了Spinner的登录界面,初学的朋友可以直接拿过来使用。本界面使用的是流式布局,也是我最喜欢用的布局方式,同学们可以通过代码了解一下。代码中Intent的使用有点杂乱,主要是为了实现界面2选择完地址后,界面1已结填写的类容随着Activity来回传递,避免丢失。如果同学们有更好的实现方法就把那些Intent删除。

 

 

 

主界面MainActivity


import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    private Spinner spinner;
    private ArrayAdapter<String> adapterspin;
    String spinnertext;
    TextView textView;
    Button btn;
    EditText ed1,ed2,ed3;

    private static final String[] m={"汉族","回族","藏族","壮族","朝鲜族","维吾尔族"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, cs.class);
                intent.putExtra("ed1",ed1.getText().toString() );
                intent.putExtra("ed2",ed2.getText().toString() );
                intent.putExtra("ed3",ed3.getText().toString() );
                startActivity(intent);
            }
        });
        Intent intent =getIntent();
            String dz = intent.getStringExtra("dz");
            String user = intent.getStringExtra("ed1");
            String password = intent.getStringExtra("ed2");
            String rpassword = intent.getStringExtra("ed3");
                ed1.setText(user);
                ed2.setText(password);
                ed3.setText(rpassword);
            textView.setText(dz);


    }
    public void init(){
        spinner=findViewById(R.id.spinner1);
        spinner.setOnItemSelectedListener(new SpinnerSelectedListener());
        adapterspin = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,m);
        adapterspin.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapterspin);
        spinner.setOnItemSelectedListener(new SpinnerSelectedListener());
        spinner.setVisibility(View.VISIBLE);
        btn=findViewById(R.id.button);
        textView=findViewById(R.id.textView10);
        ed1=findViewById(R.id.ed1);
        ed2=findViewById(R.id.ed2);
        ed3=findViewById(R.id.ed3);
    }
    class SpinnerSelectedListener implements AdapterView.OnItemSelectedListener {

        public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
                                   long arg3) {

            spinnertext=m[arg2];

        }

        public void onNothingSelected(AdapterView<?> arg0) {
        }
    }
}

Spinner地址选择界面cs.java


import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

public class cs extends AppCompatActivity {

    private ListView listView;
    private List<String> mList = new ArrayList<>();
    private List<String> mclist = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_cs);
        initList();
        Intent intent = getIntent();
        String ed1=intent.getStringExtra("ed1");
        String ed2=intent.getStringExtra("ed2");
        String ed3=intent.getStringExtra("ed3");
        mclist.add(ed1);
        mclist.add(ed2);
        mclist.add(ed3);
        this.listView = (ListView) findViewById(R.id.listView);

        final MyAdapter adapter = new MyAdapter(cs.this, mList,mclist);
        listView.setAdapter(adapter);
        //ListView item的点击事件
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

            }
        });
        //ListView item 中的删除按钮的点击事件
        adapter.setOnItemDeleteClickListener(new MyAdapter.onItemDeleteListener() {
            @Override
            public void onDeleteClick(int i) {

            }
        });
    }

    /**
     * 初始化数据
     */
    private void initList() {

        mList.add("北京");
        mList.add("上海");
        mList.add("深圳");
        mList.add("杭州");
        mList.add("广州");
        mList.add("杭州");

    }
}

适配器MyAdapter.java


import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

public class MyAdapter extends BaseAdapter {
    private Context mContext;
    private List<String> mList = new ArrayList<>();
    private List<String> mclist = new ArrayList<>();

    public MyAdapter(Context context, List<String> list, List<String> clist) {
        mContext = context;
        mList = list;
        mclist=clist;
    }

    @Override
    public int getCount() {
        return mList.size();
    }

    @Override
    public Object getItem(int i) {
        return mList.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(final int i, View view, ViewGroup viewGroup) {
        ViewHolder viewHolder = null;
        if (view == null) {
            viewHolder = new ViewHolder();
            view = LayoutInflater.from(mContext).inflate(R.layout.list_item, null);
            viewHolder.mTextView = (TextView) view.findViewById(R.id.item_tv);
            viewHolder.mButton =  view.findViewById(R.id.item_btn);
            view.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) view.getTag();
        }
        viewHolder.mTextView.setText(mList.get(i));
        viewHolder.mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(mContext, MainActivity.class);
                intent.putExtra("dz",mList.get(i) );
                intent.putExtra("ed1",mclist.get(0) );
                intent.putExtra("ed2",mclist.get(1) );
                intent.putExtra("ed3",mclist.get(2) );
                mContext.startActivity(intent);
            }
        });
        return view;
    }

    /**
     * 删除按钮的监听接口
     */
    public interface onItemDeleteListener {
        void onDeleteClick(int i);
    }

    private onItemDeleteListener mOnItemDeleteListener;

    public void setOnItemDeleteClickListener(onItemDeleteListener mOnItemDeleteListener) {
        this.mOnItemDeleteListener = mOnItemDeleteListener;
    }

    class ViewHolder {
        TextView mTextView;
        Button mButton;
    }

}

对应的XML文件

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="40dp"
    android:background="#FFFFFF">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#FFFFFF"
        android:layout_marginBottom="20dp"
        android:gravity="center"
        android:orientation="horizontal">
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="用户名:"
        />

    <EditText
        android:id="@+id/ed1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
       />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#FFFFFF"
        android:gravity="center"
        android:layout_marginBottom="20dp"
        android:orientation="horizontal">
    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="密     码:"
      />

    <EditText
        android:id="@+id/ed2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPassword"
       />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#FFFFFF"
        android:layout_marginBottom="20dp"
        android:gravity="center"
        android:orientation="horizontal">
    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:text="确认密码:"
      />

    <EditText
        android:id="@+id/ed3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPassword"
       />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="20dp"
        android:background="#FFFFFF"
        android:orientation="horizontal">
    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="民     族:" />
    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:spinnerMode="dropdown"
      />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#FFFFFF"
        android:layout_marginBottom="20dp"
        android:orientation="horizontal">
    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="籍      贯:" />
    <Button
        android:id="@+id/button"
        android:layout_width="153dp"
        android:layout_height="46dp"
        android:text="单击选择城市"
       />
        <TextView
            android:id="@+id/textView10"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            />
    </LinearLayout>
    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_gravity="center"
        android:layout_height="41dp"
        android:text="提交"
      />

    </LinearLayout>

activity_cs.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:padding="10dp"
    android:layout_height="match_parent">

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />

</LinearLayout>

list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="20dp"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/item_tv"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="this is text"
        android:textSize="24dp"/>

    <androidx.appcompat.widget.AppCompatRadioButton
        android:focusable="false"
        android:id="@+id/item_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       />
</LinearLayout>

结束。

后面同学们可以在MainActivity里添加按键的监听实现自己想要的功能了!其他一些改动可以自己完成。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android实现用户登录和注册界面 的相关文章

  • 如何清除所有WebView存储的信息?

    我有一个 Android 浏览器 我可以选择清除缓存 存储 cookie 等 代码如下所示 webView clearCache true webView clearFormData webView clearHistory webView
  • 如何对这个字符串进行子串化

    我想得到这个字符串的 4 个部分 String string 10 trillion 896 billion 45 million 56873 我需要的4个部分是 10万亿 8960亿 4500万 和 56873 我所做的是删除所有空格 然
  • 类型容器“Android 依赖项”引用不存在的库 android-support-v7-appcompat/bin/android-support-v7-appcompat.jar

    我在尝试在我的项目中使用 Action Bar Compat 支持库时遇到了某种错误 我不知道出了什么问题 因为我已按照此链接中的说明进行操作 gt http developer android com tools support libr
  • 卸载后 Web 应用程序不显示“添加到主屏幕”

    这是我第一次创建网络应用程序 我设法解决了这个问题 所以我得到了实际的 chrome 提示 将其添加到主屏幕 然后我从手机上卸载了该网络应用程序 因为我想将其展示给我的同事 但是 屏幕上不再出现提示 问题 这是有意为之的行为还是我的应用程序
  • Android 30+ 中的视频捕获意图 - 只有所有者才能与待处理项目交互

    我正在尝试在我的应用程序上捕获视频 它可以在 android API 30 以下运行 但不能在 30 以上运行 似乎在 sdk 30 之后 android 不允许完全读取外部存储 作用域存储 我目前遇到这个错误 java lang Ille
  • 无法获取log.d或输出Robolectrict + gradle

    有没有人能够将 System out 或 Log d 跟踪从 robolectric 测试输出到 gradle 控制台 我在用Robolectric Gradle 测试插件 https github com robolectric robo
  • 如何以编程方式检查 AndroidManifest.xml 中是否声明了服务?

    我正在编写一个库 该库提供了一项服务 其他开发人员可以通过将其包含在他们的项目中来使用该服务 因此 我无法控制 AndroidManifest xml 我在文档中解释了要做什么 但一个常见的问题是人们忽略了将适当的 标记添加到其清单中 或者
  • android xamarin 中的 reCaptcha

    我想在 Xamarin android 应用程序中实现验证码 我抓住了这个在 Android 中集成 googles reCaptcha 验证 https www c sharpcorner com article how to integ
  • 找不到处理意图 com.instagram.share.ADD_TO_STORY 的活动

    在我们的 React Native 应用程序中 我们试图让用户根据视图 组件中的选择直接将特定图像共享到提要或故事 当我们尝试直接使用 com instagram share ADD TO FEED 进行共享时 它以一致的方式完美运行 但是
  • 是否必须删除 Intent extra?

    这可能是一个愚蠢的问题 但是是否有一条规则规定消费活动必须显式删除 Intent 额外内容 或者只有在回收 Intent 对象时才如此 换句话说 如果我总是通过执行以下操作来链接到下一个活动 Intent i new Intent MyCu
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 如何使用 Cordova 获取当前安装的应用程序的版本?

    我已经找到了应用程序可用性插件 https github com ohh2ahh AppAvailability它主要检查用户是否在其设备上安装了某个应用程序 是否有可能获得应用程序的当前版本 开发者名称 重要 以及所有可能的信息 一般来说
  • 如何默认在 ActionOpenDocument 意图中显示“内部存储”选项

    我需要用户选择一个自定义文件类型的文件 并将其从 Windows 文件资源管理器拖到 Android 设备上 但默认情况下内部存储选项不可用 当我使用以下命令启动意图时 var libraryIntent new Intent Intent
  • 尝试在 ubuntu 中编译 android 内核时出错

    我正在尝试从源代码编译 Android 内核 并且我已经下载了所有正确的软件包来执行此操作 但由于某种原因我收到此错误 arm linux androideabi gcc error unrecognized command line op
  • 在 android DatePickerDialog 中将语言设置为法语

    有什么办法可以让日期显示在DatePickerDialog用法语 我已经搜索过这个但没有找到结果 这是我的代码 Calendar c Calendar getInstance picker new DatePickerDialog Paym
  • 我的设备突然没有显示在“Android 设备选择器”中

    我正在使用我的三星 Galaxy3 设备来测试过去两个月的应用程序 它运行良好 但从今天早上开始 当我将设备连接到系统时 它突然没有显示在 Android 设备选择器 窗口中 我检查过 USB 调试模式仅在我的设备中处于选中状态 谁能猜出问
  • Crashlytics 出现 Android Studio 构建错误

    我正在尝试将 CrashLytics 与 Android Studio 和 gradle 一起使用 但出现一个令人困惑的错误 java lang NoSuchMethodError 我的 build gradle 是 buildscript
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两
  • 强制 Listview 不重复使用视图(复选框)

    我做了一个定制Listview 没有覆盖getView 方法 Listview 中的每个项目都具有以下布局 联系布局 xml

随机推荐

  • 程序员面试大厂被拆台:干这么多年不懂设计模式谁会要

    正在敲代码的你 春节假期即将来临 复盘这1年 你印象最深刻的一件事是什么 有人在群里回答了一条扎心的答案 忙碌1年 每天996 回首2019除了加班再无成长可说 你以为只要把事情搞定了 成长是一件自然而然的事情 但是过段时间你发现之前犯过的
  • Java生成doc文档一(概念简介)

    在很多项目的实际工作中 后端可能需要将一些整合的数据输出成word pdf excel等形式的文档 最近我在项目也遇到这样的而需求 这里就记录下来是如何一步一步完成java后端生成doc文档的 由于现在word文档基本都是用到07以上 所以
  • 协程中的流

    协程中的异步流 基础 一 什么是异步流 可以连续返回多个值 与集合的区别 集合可以返回多个计算好的值 但是只能一次性返回 与Rxjava 的流是同一个概念 二 如何创建异步流 1 最基础的流构建器 flow flow 构建块中的代码可以挂起
  • Windows上发生异常时抓取dump

    文章目录 正文 RaiseException函数 捕获大部分崩溃 SetUnhandledExceptionFilter 那还有小部分呢 为什么调试器可以抓到所有崩溃 CRT C STL 系统API之间的关系 CRT中几个重要的函数 退出进
  • 学长告诉我,大厂MySQL都是通过SSH连接的

    大家好 我是咔咔 不期速成 日拱一卒 一 背景 之前待的几个公司 数据库 服务器权限都是给所有后端直接拉满的 但也会出现员工离职的情况 每次有人离职时都需要改数据库密码 服务器密码 每次密码修改后得告知所有开发修改本地密码 但这样的事情也不
  • 详解反调试技术

    反调试技术 恶意代码用它识别是否被调试 或者让调试器失效 恶意代码编写者意识到分析人员经常使用调试器来观察恶意代码的操作 因此他们使用反调试技术尽可能地延长恶意代码的分析时间 为了阻止调试器的分析 当恶意代码意识到自己被调试时 它们可能改变
  • xilinx mipi ip

    占位
  • JSP页面中Input输入框获取当前系统时间

    JSP页面中Input输入框获取当前系统时间 在input属性value中填写如下代码即可获取系统当前时间输入 value
  • switch游戏机小白初体验

    1 switch版本区别 lite 续航版与oled的区别 oled屏幕比续航版的大 续航版和oled版都可以连接电视或显示器 lite只能玩掌机 只喜欢玩掌机的可以选lite 更便宜 国行 港版 日版的区别 国行不能与全球玩家联机 不能买
  • warning: could not find UI helper ‘git-credential-manager-ui‘

    可以先试试别人的教程 58条消息 关于git 凭证存储 credential helper配置 解决 git pull push fetch remote not found的问题 DavidFFFFFF的博客 CSDN博客 我是因为换了电
  • Python pyinstaller打包exe最完整教程

    目录 1 简介 2 安装 3 原理和打包效果 3 1 原理概述 3 2 搜索模块 3 3 打包效果概述 3 4 打包成单个文件夹 优点 缺点 3 5 打包成单个exe 优点 缺点 4 打包 4 1 基本语法 4 2 参数总览 位置参数 可选
  • IDEA导入eclipse项目并部署运行完整步骤(转发)

    首先说明一下 idea里的project相当于eclipse里的workspace 而idea里的modules相当于eclipse里的project 1 File gt Import Project 在弹出的对话框里选择要导入的项目 2
  • IAR仿真确认延时程序时间的准确性

    单片机 程序经常会用到延时函数 毫秒延时或微秒延时函数 为了确认延时函数时间的准确性 以前经常是需要通过IO口输出波形来确认时间是否准确 最近发现了个更方便准确的方法 只需要通过IAR仿真软件即可准确知道延时函数的运行时间 1 首先在IAR
  • SQL 数据更新

    SQL 数据更新 数据更新有三种 插入 修改 删除 一 插入数据 插入元组 行 INSERT Into lt 表名 gt lt 属性列1 gt lt 属性列2 gt lt 属性列3 gt lt 属性列4 gt Values lt 常量1 g
  • 2022.7台式机装机指南(3060 + 12490F)

    文章目录 硬件购买 装机避坑 系统制作 系统激活 大学四年用的华硕飞行堡垒FX86 那时候的配置还可以 8代i7 1050ti 8G 256固态 1T机械 后来又买了一张内存条 扩到了16g 四年只出过2次故障 第一次蓝屏自己修好了 第二次
  • PDF Redactor - 涂黑屏蔽PDF文字让敏感内容不可读的软件工具

    PDF Redactor是一款Windows平台下的PDF小工具软件 旨在涂黑屏蔽或删除PDF文件中的敏感文本和图像以保护隐私 被屏蔽的内容不仅在PDF阅读器中无法查看 而且即使使用文本搜索功能也无法再找到这部分内容 这些内容将从PDF文件
  • python json.dumps中文乱码问题解决

    json dumps var ensure ascii False 并不能解决中文乱码的问题 json dumps在不同版本的Python下会有不同的表现 注意下面提到的中文乱码问题在Python3版本中不存在 注 下面的代码再python
  • 解决pyside6-uic生成py代码中文为unicode(乱码)的问题

    前言 本来想用Java做客户端 后来发现很多算法还是Python有现成的比较方便 所以最终选择了pyside6 但是用Designer QT设计师 设计完后 生成的代码中文部分显示为unicode 也可以理解为乱码 就像这样 self pu
  • 前端分页插件_免费开源的React前端框架——ReactAdmin

    介绍 ReactAdmin是一个Github上免费开源的前端框架 不是组件库 也不是模板 它是一个框架 采用es6 React和Material Design构建基于Rest GraphQl API的Web应用程序 在React上star数
  • Android实现用户登录和注册界面

    我们在做android项目时经常会用到用户登录 这里呈上实现了Spinner的登录界面 初学的朋友可以直接拿过来使用 本界面使用的是流式布局 也是我最喜欢用的布局方式 同学们可以通过代码了解一下 代码中Intent的使用有点杂乱 主要是为了