基于Android Studio 蜜雪冰城(奶茶饮品点餐)—原创

目录

一、项目演示

二、开发环境

三、项目详情

四、项目完整源码


一、项目演示

本项目素材、数据和布局页面参考均来自《蜜雪冰城》,在此特别声明感谢!

基于Android Studio 蜜雪冰城(奶茶饮品)—原创

二、开发环境

三、项目详情

1.启动页

这段代码是一个简单的Android应用程序启动活动(Activity),具体功能如下:

1. **延迟进入登录页面:**
   - 在 `onCreate()` 方法中,使用 `Handler` 和 `Runnable` 实现了一个延迟执行的功能,延迟时间为3秒。
   - `runnable` 对象的 `run()` 方法调用了 `tomainActive()` 方法,在延迟结束后启动 `LoginRegisterActivity` 并关闭当前的 `StartActivity`。

2. **计时器功能:**
   - 定义了一个内部类 `TimeCount`,继承自 `CountDownTimer`,用于执行一个四秒的倒计时操作,每隔一秒触发一次。
   - `onFinish()` 方法中,倒计时结束后移除了 `handler` 中的 `runnable` 对象,确保不会在倒计时结束后再次跳转到登录页面。

3. **Activity 生命周期方法:**
   - `onCreate()` 方法中,设置了布局文件 `activity_start.xml` 作为界面显示内容,并启动了延迟执行和计时器。
   - `onDestroy()` 方法中未显示重写,但在 `toMainActive()` 方法中的 `finish()` 方法确保了在跳转完成后关闭当前 Activity。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="#fff"><ImageViewandroid:id="@+id/image_mxbc"android:layout_width="214.0dip"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_marginTop="166.0dip"android:scaleType="centerInside"android:src="@drawable/img_mxbc" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:layout_marginBottom="60.0dip"android:text="豫ICP备13006352号-7A"android:textColor="#777777"android:textSize="10sp" /><TextViewandroid:id="@+id/count_down"android:layout_width="56.0dip"android:layout_height="28.0dip"android:layout_alignParentRight="true"android:layout_alignParentBottom="true"android:layout_marginRight="20.0dip"android:layout_marginBottom="50.0dip"android:background="@drawable/bg_splash_count_down"android:gravity="center"android:text="跳过"android:textColor="#fff"android:textSize="11sp" />
</RelativeLayout>

2.注册、登录

这段代码实现了一个基本的注册页面功能:

- **视图与控件**:包括关闭页面按钮、手机号、密码、确认密码的输入框以及跳转登录页面按钮和注册按钮。
- **功能与逻辑**:
  - 点击关闭按钮或跳转登录按钮可退出当前页面。
  - 注册按钮点击后,进行输入验证:
    - 检查手机号、密码和确认密码是否为空。
    - 检查确认密码与密码是否一致。
  - 使用 `UserHelper` 类进行数据库操作,将用户信息添加到数据库中。
  - 根据操作结果显示注册成功或失败的提示消息,并结束当前页面。

这段代码通过简单的逻辑和界面设计,实现了用户注册的基本流程,确保了基本的输入验证和数据库操作功能。

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"tools:context=".Activity.RegisterActivity"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:padding="10dp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"><ImageViewandroid:id="@+id/page_close"android:layout_width="20dp"android:layout_height="20dp"android:layout_gravity="left"android:src="@drawable/icon_cart_close" /><ImageViewandroid:layout_width="match_parent"android:layout_height="150dp"android:layout_marginTop="40dp"android:src="@drawable/img_mxbc" /><EditTextandroid:id="@+id/register_phone_number"android:layout_width="fill_parent"android:layout_height="40dp"android:layout_marginLeft="15dp"android:layout_marginTop="40dp"android:layout_marginRight="15dp"android:background="@drawable/bg_corner_solid_f5f5f5_6dp"android:hint="手机号码"android:inputType="number"android:paddingLeft="20.0dip"android:textColor="@color/black"android:textColorHint="@color/grey_AAAAAA"android:textCursorDrawable="@drawable/shape_cursor_color"android:textSize="@dimen/text_size_13sp" /><EditTextandroid:id="@+id/register_password"android:layout_width="match_parent"android:layout_height="40dp"android:layout_marginLeft="15dp"android:layout_marginTop="20dp"android:layout_marginRight="15dp"android:background="@drawable/bg_corner_solid_f5f5f5_6dp"android:hint="用户密码"android:inputType="textPassword"android:paddingLeft="20.0dip"android:textColor="@color/black"android:textColorHint="@color/grey_AAAAAA"android:textCursorDrawable="@drawable/shape_cursor_color"android:textSize="@dimen/text_size_13sp" /><EditTextandroid:id="@+id/register_rpassword"android:layout_width="match_parent"android:layout_height="40dp"android:layout_marginLeft="15dp"android:layout_marginTop="20dp"android:layout_marginRight="15dp"android:background="@drawable/bg_corner_solid_f5f5f5_6dp"android:hint="用户密码"android:inputType="textPassword"android:paddingLeft="20.0dip"android:textColor="@color/black"android:textColorHint="@color/grey_AAAAAA"android:textCursorDrawable="@drawable/shape_cursor_color"android:textSize="@dimen/text_size_13sp" /><TextViewandroid:id="@+id/tv_login"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:layout_marginRight="15dp"android:gravity="center|right"android:text="已有帐号,立即登录!"android:textColor="@color/black" /><TextViewandroid:id="@+id/register_action"android:layout_width="fill_parent"android:layout_height="40dp"android:layout_marginLeft="@dimen/default_left_padding"android:layout_marginTop="50dp"android:layout_marginRight="@dimen/default_right_padding"android:background="@drawable/bg_login_action"android:enabled="true"android:gravity="center"android:text="立 即 注 册"android:textColor="@color/white"android:textSize="@dimen/text_size_16sp" /></LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

这段代码实现了一个登录页面的功能,具体功能和特点如下:

1. **界面元素和事件绑定**:
   - 声明了各个控件(如关闭按钮、手机号输入框、密码输入框、获取验证码按钮、注册链接、登录按钮等)和辅助类(`UserHelper`)。
   - 在 `onCreate` 方法中进行了布局初始化和事件监听的设置。

2. **获取验证码功能**:
   - 当手机号输入框内容发生变化时,监听器检查手机号是否为空。如果不为空,则启用获取验证码按钮,并且设置点击事件显示固定的验证码(这里是 "1234")。

3. **登录功能实现**:
   - 使用了 `TextWatcher` 监听器来检测手机号、密码和验证码输入框的变化。
   - 当所有字段都非空时,启用登录按钮。点击登录按钮时,首先检查验证码是否为 "1234",如果不是则提示验证码错误;否则,使用 `UserHelper` 类的方法检查用户的手机号和密码是否匹配。
   - 如果匹配成功,则提示登录成功,并将用户手机号保存到 `SharedPreferences` 中,并关闭登录界面;否则提示登录失败。

4. **注册链接处理**:
   - 点击注册链接 (`tvRegister`) 启动 `RegisterActivity`,允许用户注册新账号。

5. **关闭页面按钮处理**:
   - 点击关闭按钮 (`pageClose`) 关闭当前登录页面。

总体来说,该代码实现了基本的用户登录流程,包括输入验证、验证码获取、登录验证和跳转注册等功能,适合用于一个简单的用户认证和管理系统。

  @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_login);// 初始化界面元素和事件监听initView();setupCloseButton();setupRegisterLink();setupLoginFunctionality();setupSmsCodeListener();}

3.首页

这段代码是一个Android的片段(Fragment),实现了以下功能:

- 显示一个轮播广告(使用了第三方库 `Banner`)。
- 根据用户登录状态显示不同的内容:已登录则显示用户信息和订单选项,未登录则显示登录提示和登录按钮。
- 点击订单选项(inshop 和 takeout)时跳转到相应的订单处理页面。
- 点击用户信息区域时根据登录状态跳转到个人信息页面或登录页面。

主要用到了 `Glide` 库加载图片,并进行了一些视图初始化和点击事件处理的设置。

<?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:background="@color/grey_f4f4f7"android:orientation="vertical"tools:context=".Fragment.HomeFragment"><ScrollViewandroid:layout_width="match_parent"android:scrollbars="none"android:layout_height="match_parent"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><LinearLayoutandroid:id="@+id/home_user_layout"android:layout_width="fill_parent"android:layout_height="70dp"android:layout_marginLeft="8.0dip"android:layout_marginTop="-37.0dip"android:layout_marginRight="8.0dip"android:background="@drawable/home_01"android:gravity="center"android:orientation="horizontal"><androidx.appcompat.widget.AppCompatImageViewandroid:id="@+id/header_avatar"android:layout_width="32.0dip"android:layout_height="32.0dip"android:layout_marginLeft="16.0dip"android:src="@drawable/icon_not_login_user" /><LinearLayoutandroid:layout_width="0.0dip"android:layout_height="wrap_content"android:layout_marginLeft="14.0dip"android:layout_weight="1"android:orientation="vertical"><TextViewandroid:id="@+id/user_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="尊敬的会员"android:textColor="@color/black"android:textSize="@dimen/text_size_16sp"android:textStyle="bold" /></LinearLayout><TextViewandroid:id="@+id/tv_login"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginRight="20.0dip"android:text="注册/登录"android:textColor="@color/themeRedColor"android:textSize="@dimen/text_size_13sp"android:textStyle="bold"android:visibility="gone" /><LinearLayoutandroid:id="@+id/ll_show"android:layout_width="wrap_content"android:layout_height="match_parent"android:orientation="horizontal"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"android:gravity="center"android:orientation="vertical"><TextViewandroid:id="@+id/textView5"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:text="0"android:textColor="@color/black" /><TextViewandroid:id="@+id/textView7"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="4dp"android:gravity="center"android:text="雪王币"android:textColor="@color/black" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginLeft="15dp"android:layout_marginRight="15dp"android:layout_weight="1"android:gravity="center"android:orientation="vertical"><TextViewandroid:id="@+id/textView6"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:text="0"android:textColor="@color/black" /><TextViewandroid:id="@+id/textView8"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="4dp"android:gravity="center"android:text="优惠卷"android:textColor="@color/black" /></LinearLayout></LinearLayout></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="8dp"android:layout_marginTop="10dp"android:layout_marginRight="8dp"android:background="@drawable/home_01"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><ImageViewandroid:id="@+id/inshop"android:layout_width="match_parent"android:layout_height="150dp"android:layout_weight="1"android:src="@drawable/inshop" /><ImageViewandroid:id="@+id/takeout"android:layout_width="match_parent"android:layout_height="150dp"android:layout_weight="1"android:src="@drawable/takeout" /></LinearLayout><Viewandroid:id="@+id/view4"android:layout_width="match_parent"android:layout_height="1dp"android:layout_marginLeft="16.0dip"android:layout_marginTop="5dp"android:layout_marginRight="16.0dip"android:background="@color/grey_150A5E_5" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginTop="5dp"android:orientation="horizontal"><ImageViewandroid:id="@+id/imageView4"android:layout_width="match_parent"android:layout_height="90dp"android:layout_weight="1"android:src="@drawable/home_03" /><ImageViewandroid:id="@+id/imageView5"android:layout_width="match_parent"android:layout_height="90dp"android:layout_weight="1"android:src="@drawable/home_04" /><ImageViewandroid:id="@+id/imageView6"android:layout_width="match_parent"android:layout_height="90dp"android:layout_weight="1"android:src="@drawable/home_001" /><ImageViewandroid:id="@+id/imageView7"android:layout_width="match_parent"android:layout_height="90dp"android:layout_weight="1"android:src="@drawable/home_02" /></LinearLayout></LinearLayout><TextViewandroid:id="@+id/tab_"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_gravity="center"android:layout_marginLeft="8dp"android:layout_marginTop="15dp"android:layout_marginRight="8dp"android:text="甜蜜资讯"android:textColor="@color/black"android:textSize="@dimen/text_size_16sp"android:textStyle="bold" /><ImageViewandroid:id="@+id/img_1"android:layout_width="match_parent"android:layout_height="120dp"android:layout_marginLeft="8dp"android:layout_marginTop="10dp"android:layout_marginRight="8dp"android:scaleType="fitXY"android:src="@drawable/banner2" /><ImageViewandroid:id="@+id/img_2"android:layout_width="match_parent"android:layout_height="120dp"android:layout_marginLeft="8dp"android:layout_marginTop="10dp"android:layout_marginRight="8dp"android:scaleType="fitXY"android:src="@drawable/banner3" /></LinearLayout></ScrollView></LinearLayout>

4.点餐页面

这段代码实现了一个点单页面的 Android Fragment,主要功能包括:

- 展示菜单分类和产品列表,并支持根据搜索关键字进行筛选显示。
- 根据用户登录状态动态展示地址选择、结算功能,并处理相应的点击事件。
- 使用 `Gson` 解析本地 JSON 数据来加载菜单信息。
- 实时更新总价格显示,并支持用户在不同订单类型(自提或外送)之间切换。

该代码还包括了处理返回按钮、清空订单和地址信息等相关逻辑。

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/fragment_takeOrder"tools:context=".Fragment.TakeOrderFragment"><LinearLayoutandroid:id="@+id/linearLayout3"android:layout_width="0dp"android:layout_height="30dp"android:layout_marginStart="8dp"android:layout_marginTop="8dp"android:layout_marginEnd="8dp"android:orientation="horizontal"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"><TextViewandroid:id="@+id/tv_inshop"android:layout_width="50dp"android:layout_height="match_parent"android:gravity="center"android:text="自提"android:textColor="@color/black"android:textSize="18sp"android:textStyle="bold" /><TextViewandroid:id="@+id/tv_takeout"android:layout_width="50dp"android:layout_height="match_parent"android:layout_marginLeft="10dp"android:gravity="center"android:text="外送"android:textColor="@color/black_40"android:textSize="18sp"android:textStyle="bold" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/bg_corner_solid_f5f5f5_6dp"android:gravity="center|left"android:orientation="horizontal"android:padding="3dp"><ImageViewandroid:id="@+id/img_search"android:layout_width="15dp"android:layout_height="15dp"android:layout_marginLeft="10dp"android:src="@drawable/icon_search" /><EditTextandroid:id="@+id/et_search"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="5dp"android:layout_weight="1"android:background="@color/grey_E6E6E6"android:ems="10"android:hint="冰鲜柠檬茶"android:inputType="textPersonName"android:textSize="12sp" /></LinearLayout></LinearLayout><LinearLayoutandroid:id="@+id/linearLayout4"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:orientation="vertical"app:layout_constraintEnd_toEndOf="@+id/linearLayout3"app:layout_constraintStart_toStartOf="@+id/linearLayout3"app:layout_constraintTop_toBottomOf="@+id/linearLayout3"><LinearLayoutandroid:id="@+id/ll_address"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginBottom="10dp"android:gravity="center|left"android:orientation="horizontal"android:visibility="gone"><TextViewandroid:id="@+id/tv_address"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="配送至 · 陕西省"android:textColor="@color/black"android:textSize="16sp" /><ImageViewandroid:id="@+id/imageView2"android:layout_width="10dp"android:layout_height="10dp"android:layout_marginLeft="2dp"android:src="@drawable/icon_arrow_dark_next" /></LinearLayout><TextViewandroid:id="@+id/textView11"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="蜜雪冰城(总店)"android:textColor="@color/black" /></LinearLayout><LinearLayoutandroid:id="@+id/linearLayout5"android:layout_width="0dp"android:layout_height="0dp"android:layout_marginTop="8dp"android:layout_marginBottom="2dp"android:orientation="horizontal"app:layout_constraintBottom_toTopOf="@+id/bottom_layout"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/linearLayout4"><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/rv_menu"android:layout_width="80dp"android:layout_height="match_parent" /><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/rv_menuItem"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginLeft="10dp"android:layout_weight="1"></androidx.recyclerview.widget.RecyclerView></LinearLayout><LinearLayoutandroid:id="@+id/bottom_layout"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:background="@color/white"android:clipChildren="false"android:orientation="vertical"android:padding="5dp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"><FrameLayoutandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="horizontal"><FrameLayoutandroid:id="@+id/cart_anim"android:layout_width="38.0dip"android:layout_height="40.0dip"android:layout_gravity="center_vertical"android:layout_marginLeft="9.0dip"android:layout_marginRight="12.0dip"><ImageViewandroid:id="@+id/order_cart"android:layout_width="31.0dip"android:layout_height="35.0dip"android:layout_gravity="center_vertical"android:layout_marginBottom="2.0dip"android:src="@drawable/icon_cart" /><TextViewandroid:id="@+id/order_goods_count"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center|right|top"android:background="@drawable/icon_bg_number_tip"android:gravity="center"android:textColor="@color/white"android:textSize="@dimen/text_size_10sp"android:visibility="gone" /></FrameLayout><RelativeLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center|right"android:layout_marginRight="123.0dip"android:orientation="vertical"><RelativeLayoutandroid:id="@+id/price_layout"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:orientation="horizontal"><TextViewandroid:id="@+id/delivery_fee"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_alignBottom="@id/total_price"android:layout_alignParentTop="true"android:layout_marginTop="0dp"android:layout_marginRight="6.0dip"android:layout_marginBottom="2.0dip"android:layout_toLeftOf="@id/total_tip"android:gravity="bottom"android:text="另需配送费¥2"android:textColor="@color/grey_FFAAAAAA"android:textSize="@dimen/text_size_12sp"android:visibility="invisible" /><TextViewandroid:id="@+id/total_price"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:text="¥0"android:textColor="@color/black_333333"android:textSize="16sp"android:textStyle="bold" /><TextViewandroid:id="@+id/total_tip"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignBottom="@id/total_price"android:layout_marginBottom="2.0dip"android:layout_toLeftOf="@id/total_price"android:text="合计:"android:textColor="@color/black"android:textSize="@dimen/text_size_12sp" /></RelativeLayout></LinearLayout></androidx.constraintlayout.widget.ConstraintLayout>

5.订单页、订单详情页

这段代码实现了一个订单页面的 Android Fragment,主要功能包括:

- 根据用户登录状态,显示对应手机号的订单列表。
- 当用户未登录时,显示登录提示信息。
- 当用户已登录且有订单时,显示订单列表,并提供适配器来展示订单信息。
- 提供了 onResume 方法来在 Fragment 可见时刷新订单列表。
- 包括一个返回按钮的处理逻辑,但具体操作未实现。

该代码使用了 `ListView` 来展示订单,通过 `SharedPreferences` 获取用户手机号,并使用 `OrderHelper` 类来操作订单数据。

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:background="@color/grey_F5F5F5"tools:context=".Fragment.OrderFragment"><LinearLayoutandroid:id="@+id/linearLayout6"android:layout_width="0dp"android:layout_height="40dp"android:background="@color/white"android:orientation="horizontal"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"><TextViewandroid:id="@+id/tv_title"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_weight="1"android:gravity="center"android:text="订单管理"android:textColor="@color/black"android:textSize="18sp"android:textStyle="bold" /></LinearLayout><ListViewandroid:id="@+id/lv"android:layout_width="0dp"android:layout_height="0dp"android:layout_marginStart="4dp"android:layout_marginTop="8dp"android:layout_marginEnd="4dp"android:divider="@android:color/transparent"android:dividerHeight="0dp"android:scrollbars="none"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/linearLayout6" /><ImageViewandroid:id="@+id/img_null"android:layout_width="0dp"android:layout_height="0dp"android:src="@drawable/img_empty_order"android:visibility="visible"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/linearLayout6" />
</androidx.constraintlayout.widget.ConstraintLayout>

这段代码实现了一个订单详情页面的 Android 活动(Activity),功能包括:

- 根据传入的意图显示订单的详细信息,包括订单类型(自提或外送)、时间、订单号、商品数量和总金额。
- 根据订单类型调整显示内容,包括是否显示外送费用和外送布局的可见性。
- 根据用户手机号和订单号查询订单数据,并使用自定义的适配器 `OrderDetailsAdapter` 显示订单详情列表。
- 提供了返回按钮和再来一单按钮的点击事件处理逻辑。

该活动通过 `SharedPreferences` 获取用户手机号,并使用 `OrderHelper` 类来操作订单数据。

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:background="@color/grey_F8F8F8"tools:context=".Activity.OrderDetailsActivity"><FrameLayoutandroid:id="@+id/page_title_layout"android:layout_width="match_parent"android:layout_height="150dp"android:background="@drawable/img_order_detail_bg"android:orientation="horizontal"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"><FrameLayoutandroid:layout_width="fill_parent"android:layout_height="fill_parent"><ImageViewandroid:id="@id/page_back"android:layout_width="45.0dip"android:layout_height="60dp"android:paddingLeft="12.0dip"android:paddingTop="15dp"android:paddingRight="12.0dip"android:paddingBottom="12.0dip"android:scaleType="centerInside"android:src="@drawable/icon_page_back_white" /><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical"><TextViewandroid:id="@+id/page_title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="28.0dip"android:layout_marginTop="60dp"android:ellipsize="none"android:maxWidth="260.0dip"android:singleLine="true"android:text="订单已完成"android:textColor="@color/white"android:textSize="@dimen/text_size_18sp"android:textStyle="bold" /><TextViewandroid:id="@+id/page_status_tip"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="28.0dip"android:layout_marginTop="12.0dip"android:ellipsize="none"android:maxWidth="200.0dip"android:maxLines="2"android:text="如未取餐,请及时到店领取,祝您用餐愉快"android:textColor="@color/white"android:textSize="@dimen/text_size_12sp" /></LinearLayout><ImageViewandroid:id="@+id/page_img_action"android:layout_width="130.0dip"android:layout_height="90.0dip"android:layout_gravity="bottom|center|right"android:layout_marginRight="@dimen/default_right_padding"android:layout_marginBottom="15dp"android:src="@drawable/img_order_finish_king" /><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="10.0dip"android:layout_gravity="bottom"android:background="@drawable/bg_corner_solid_ffffff_top_12dp" /></FrameLayout></FrameLayout><ScrollViewandroid:id="@+id/scrollView2"android:layout_width="0dp"android:layout_height="0dp"android:layout_marginStart="8dp"android:layout_marginEnd="8dp"android:layout_marginBottom="8dp"android:scrollbars="none"app:layout_constraintBottom_toTopOf="@+id/linearLayout9"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/page_title_layout"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginTop="5dp"android:background="@drawable/bg_corner_solid_ffffff_12dp"android:gravity="center"android:orientation="vertical"android:padding="10dp"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:orientation="vertical"><TextViewandroid:id="@+id/textView9"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="蜜雪冰城(总店)"android:textColor="@color/black"android:textSize="16sp"android:textStyle="bold" /><TextViewandroid:id="@+id/textView24"android:layout_width="250dp"android:layout_height="wrap_content"android:layout_marginTop="4dp"android:text="河南省郑州市金水区文化路与北环交叉口瀚海·北金商务A座16楼"android:textSize="12sp" /></LinearLayout><ImageViewandroid:id="@+id/imageView11"android:layout_width="25dp"android:layout_height="25dp"app:srcCompat="@drawable/icon_order_location" /><ImageViewandroid:id="@+id/imageView12"android:layout_width="25dp"android:layout_height="25dp"android:layout_marginLeft="20dp"android:layout_marginRight="10dp"app:srcCompat="@drawable/icon_order_phone" /></LinearLayout><Viewandroid:id="@+id/view8"android:layout_width="match_parent"android:layout_height="1.0dip"android:layout_marginLeft="4dp"android:layout_marginTop="10dp"android:layout_marginRight="4dp"android:layout_marginBottom="10dp"android:layout_weight="1"android:background="@color/grey_F5F5F5" /><ListViewandroid:id="@+id/lv"android:layout_width="match_parent"android:layout_height="wrap_content"android:scrollbars="none" /><Viewandroid:id="@+id/view9"android:layout_width="match_parent"android:layout_height="1.0dip"android:layout_marginLeft="4dp"android:layout_marginTop="10dp"android:layout_marginRight="4dp"android:layout_marginBottom="10dp"android:layout_weight="1"android:background="@color/grey_F5F5F5" /><LinearLayoutandroid:id="@+id/ll_peisong"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:orientation="horizontal"><TextViewandroid:id="@+id/textView22"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="配送费"android:textColor="@color/black" /><ImageViewandroid:id="@+id/imageView10"android:layout_width="20dp"android:layout_height="20dp"app:srcCompat="@drawable/icon_question" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"android:gravity="center|right"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_peisong"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="4dp"android:text="¥2"android:textColor="@color/black"android:textSize="14sp" /></LinearLayout></LinearLayout><Viewandroid:id="@+id/view_peisong"android:layout_width="match_parent"android:layout_height="1.0dip"android:layout_marginLeft="4dp"android:layout_marginTop="10dp"android:layout_marginRight="4dp"android:layout_marginBottom="10dp"android:layout_weight="1"android:background="@color/grey_F5F5F5" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginLeft="@dimen/default_left_padding"android:layout_marginTop="5dip"android:layout_marginRight="@dimen/default_right_padding"android:layout_marginBottom="9dip"android:gravity="bottom|center|right"android:orientation="horizontal"></LinearLayout><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_marginTop="12.0dip"android:layout_marginBottom="12.0dip"android:orientation="vertical"><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:gravity="center_vertical"android:orientation="horizontal"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="16.0dip"android:text="下单时间"android:textColor="@color/black"android:textSize="@dimen/text_size_13sp" /><TextViewandroid:id="@+id/order_time"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="16.0dip"android:textColor="@color/black"android:textSize="@dimen/text_size_13sp" /></LinearLayout><RelativeLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_marginTop="8.0dip"><TextViewandroid:id="@+id/orderId_tip"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_centerVertical="true"android:layout_marginLeft="16.0dip"android:text="订单号码"android:textColor="@color/black"android:textSize="@dimen/text_size_13sp" /><TextViewandroid:id="@+id/orderId"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:layout_marginLeft="16.0dip"android:layout_toRightOf="@id/orderId_tip"android:ellipsize="end"android:maxWidth="185.0dip"android:maxLines="1"android:textColor="@color/black"android:textSize="@dimen/text_size_13sp" /></RelativeLayout><LinearLayoutandroid:id="@id/remark_layout"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_marginTop="8.0dip"android:orientation="horizontal"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="16.0dip"android:text="备注"android:textColor="@color/black"android:textSize="@dimen/text_size_13sp" /><TextViewandroid:id="@id/remark"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="42.0dip"android:text="无"android:textColor="@color/black"android:textSize="@dimen/text_size_13sp" /></LinearLayout></LinearLayout></FrameLayout></LinearLayout></ScrollView><LinearLayoutandroid:id="@+id/linearLayout9"android:layout_width="match_parent"android:layout_height="50dp"android:background="@color/white"android:gravity="center|right"android:orientation="horizontal"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"><TextViewandroid:id="@+id/one_more"android:layout_width="70dp"android:layout_height="25dp"android:layout_below="@id/price_layout"android:layout_alignParentRight="true"android:layout_marginRight="10dp"android:background="@drawable/bg_corner_solid_fc3f41_4dp"android:enabled="true"android:gravity="center"android:text="再来一单"android:textColor="@color/red_FC3F41"android:textSize="@dimen/text_size_12sp" /></LinearLayout></androidx.constraintlayout.widget.ConstraintLayout>

6.地址页面、修改增加页

7.结算页面

这段代码实现了一个支付页面的 Android 活动(Activity),功能包括:

- 根据订单类型(自提或外送)显示相应的配送地址和费用信息。
- 根据用户选择的支付方式(微信或支付宝)更新支付操作。
- 显示用户的订单列表,并提供支付操作的点击事件处理逻辑。
- 使用 `SharedPreferences` 获取用户的地址信息和手机号,使用 `TakeOrderHelper` 和 `OrderHelper` 处理订单数据的存储和获取。

该活动允许用户选择支付方式,并在确认支付后保存订单并返回到主界面。 

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"tools:context=".Activity.PayActivity"><LinearLayoutandroid:id="@+id/linearLayout6"android:layout_width="0dp"android:layout_height="40dp"android:background="@color/red_FC3F41"android:orientation="horizontal"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent">android:layout_height="0dp"android:layout_marginStart="8dp"android:layout_marginTop="10dp"android:layout_marginEnd="8dp"android:layout_marginBottom="8dp"android:scrollbars="none"app:layout_constraintBottom_toTopOf="@+id/frameLayout"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/linearLayout6"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/bg_corner_solid_ffffff_12dp"android:orientation="vertical"><TextViewandroid:id="@+id/tv_title"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="@dimen/default_left_padding"android:layout_marginTop="9.0dip"android:layout_marginRight="@dimen/default_right_padding"android:text="TextView"android:textColor="@color/red_FF0F4B"android:textSize="18sp"android:textStyle="bold" /><TextViewandroid:id="@+id/tv_address"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="@dimen/default_left_padding"android:layout_marginTop="10dp"android:layout_marginRight="@dimen/default_right_padding"android:text="TextView"android:textColor="@color/black" /><TextViewandroid:id="@+id/tv_name_phone"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="@dimen/default_left_padding"android:layout_marginTop="5dp"android:layout_marginRight="@dimen/default_right_padding"android:ellipsize="end"android:maxLines="1"android:text="TextView" /><LinearLayoutandroid:id="@+id/ll_dianpu"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginLeft="@dimen/default_left_padding"android:layout_marginTop="10dp"android:layout_marginRight="@dimen/default_right_padding"android:layout_marginBottom="10dp"android:orientation="horizontal"><TextViewandroid:id="@+id/textView34"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="蜜雪冰城(总店)" /><TextViewandroid:id="@+id/textView35"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:gravity="center|right"android:text="订单由第三方骑手配送"android:textColor="@android:color/holo_red_light" /></LinearLayout></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginTop="15dp"android:background="@drawable/bg_corner_solid_ffffff_12dp"android:orientation="vertical"><ListViewandroid:id="@+id/lv"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="@dimen/default_left_padding"android:layout_marginTop="9.0dip"android:layout_marginRight="@dimen/default_right_padding"android:scrollbars="none" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginLeft="@dimen/default_left_padding"android:layout_marginTop="9.0dip"android:layout_marginRight="@dimen/default_right_padding"android:gravity="center"android:orientation="horizontal"><TextViewandroid:id="@+id/textView22"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="配送费"android:textColor="@color/black" /><ImageViewandroid:id="@+id/imageView10"android:layout_width="20dp"android:layout_height="20dp"app:srcCompat="@drawable/icon_question" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"android:gravity="center|right"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_peisong"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="4dp"android:text="¥2"android:textColor="@color/black"android:textSize="14sp" /></LinearLayout></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginLeft="@dimen/default_left_padding"android:layout_marginTop="9.0dip"android:layout_marginRight="@dimen/default_right_padding"android:orientation="horizontal"><TextViewandroid:id="@+id/textView26"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:text="打包费"android:textColor="@color/black" /><TextViewandroid:id="@+id/textView27"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:gravity="center|right"android:text="¥0"android:textColor="@color/black" /></LinearLayout><Viewandroid:id="@+id/view6"android:layout_width="match_parent"android:layout_height="1.0dip"android:layout_marginLeft="12.0dip"android:layout_marginTop="10dp"android:layout_marginRight="12.0dip"android:layout_marginBottom="10dp"android:background="@color/grey_F5F5F5" /><Viewandroid:id="@+id/view7"android:layout_width="match_parent"android:layout_height="1.0dip"android:layout_marginLeft="12.0dip"android:layout_marginTop="10dp"android:layout_marginRight="12.0dip"android:layout_marginBottom="10dp"android:background="@color/grey_F5F5F5" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginLeft="@dimen/default_left_padding"android:layout_marginTop="5dip"android:layout_marginRight="@dimen/default_right_padding"android:layout_marginBottom="9dip"android:gravity="bottom|center|right"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_num"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="共计10件,合计 " /><TextViewandroid:id="@+id/tv_total"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="¥55"android:textColor="@color/black"android:textSize="16sp"android:textStyle="bold" /></LinearLayout></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginTop="15dp"android:background="@drawable/bg_corner_solid_ffffff_12dp"android:orientation="vertical"><TextViewandroid:id="@+id/textView19"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="@dimen/default_left_padding"android:layout_marginTop="9.0dip"android:layout_marginRight="@dimen/default_right_padding"android:text="支付方式"android:textColor="@color/black"android:textSize="@dimen/text_size_16sp"android:textStyle="bold" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginLeft="@dimen/default_left_padding"android:layout_marginTop="9.0dip"android:layout_marginRight="@dimen/default_right_padding"android:layout_marginBottom="9dip"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:orientation="horizontal"><ImageViewandroid:id="@+id/imageView3"android:layout_width="25dp"android:layout_height="25dp"app:srcCompat="@drawable/icon_pay_wechat" /><TextViewandroid:id="@+id/textView20"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginLeft="5dp"android:layout_weight="1"android:gravity="center|left"android:text="微信"android:textColor="@color/black" /><RadioButtonandroid:id="@+id/rb_weixin"android:layout_width="wrap_content"android:layout_height="wrap_content"android:buttonTint="@color/red_FF0F4B"android:checked="true" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="15dp"android:gravity="center"android:orientation="horizontal"><ImageViewandroid:id="@+id/imageView9"android:layout_width="25dp"android:layout_height="25dp"app:srcCompat="@drawable/icon_pay_alipay" /><TextViewandroid:id="@+id/textView21"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginLeft="5dp"android:layout_weight="1"android:gravity="center|left"android:text="支付宝"android:textColor="@color/black" /><RadioButtonandroid:id="@+id/rb_zhifubao"android:layout_width="wrap_content"android:layout_height="wrap_content"android:buttonTint="@color/red_FF0F4B" /></LinearLayout></LinearLayout></LinearLayout><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_gravity="center"android:layout_marginTop="15dp"android:layout_marginBottom="15dp"android:background="@drawable/bg_corner_solid_ffffff_12dp"android:orientation="vertical"><LinearLayoutandroid:id="@+id/tableware_layout"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_marginLeft="@dimen/default_left_padding"android:layout_marginTop="9.0dip"android:layout_marginRight="@dimen/default_right_padding"android:layout_marginBottom="4.0dip"android:gravity="center_vertical"android:orientation="horizontal"android:paddingTop="12.0dip"android:paddingBottom="12.0dip"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="12.0dip"android:text="餐具"android:textColor="@color/black"android:textSize="@dimen/text_size_14sp" /><TextViewandroid:id="@+id/tableware"android:layout_width="0.0dip"android:layout_height="wrap_content"android:layout_marginLeft="12.0dip"android:layout_marginRight="4.0dip"android:layout_weight="1.0"android:gravity="center|right"android:hint="按餐量提供"android:singleLine="true"android:textColor="@color/black"android:textSize="@dimen/text_size_14sp" /></LinearLayout><LinearLayoutandroid:id="@+id/remark_layout"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_marginLeft="@dimen/default_left_padding"android:layout_marginTop="5dip"android:layout_marginRight="@dimen/default_right_padding"android:gravity="center_vertical"android:orientation="horizontal"android:paddingTop="12.0dip"android:paddingBottom="12.0dip"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="12.0dip"android:text="备注"android:textColor="@color/black"android:textSize="@dimen/text_size_14sp" /><TextViewandroid:id="@+id/remark"android:layout_width="0.0dip"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:layout_marginLeft="12.0dip"android:layout_marginRight="4.0dip"android:layout_weight="1.0"android:ellipsize="end"android:gravity="center|right"android:hint="暂不支持通过备注定制口味"android:singleLine="true"android:textColor="@color/black"android:textSize="@dimen/text_size_14sp" /></LinearLayout></LinearLayout></LinearLayout></ScrollView><FrameLayoutandroid:id="@+id/frameLayout"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_gravity="bottom"android:background="@color/white"android:orientation="horizontal"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"><Viewandroid:id="@+id/bottom_line"android:layout_width="fill_parent"android:layout_height="0.5dip"android:background="@color/grey_eeeeee" /><TextViewandroid:layout_width="wrap_content"android:layout_height="64.0dip"android:layout_marginLeft="@dimen/default_left_padding"android:gravity="center"android:text="实付:"android:textColor="@color/black"android:textSize="@dimen/text_size_12sp" /></FrameLayout></androidx.constraintlayout.widget.ConstraintLayout>

8.我的页面、关于我们页面

 这两个页面只用来显示登录和退出登录然后跳转编辑资料页面使用

9.编辑资料页面

这段代码实现了一个用户信息管理页面的 Android 活动(Activity),功能包括:

- 显示用户的手机号、用户名和密码,并允许用户修改并保存这些信息。
- 使用 `SharedPreferences` 获取用户的手机号,通过 `UserHelper` 类从数据库中获取和更新用户信息。
- 提供返回按钮和保存按钮的点击事件监听,以及保存成功或失败时的提示信息。

该活动允许用户查看和修改用户名和密码,并将修改后的信息更新到数据库中。

 /*** 初始化视图组件*/private void initView() {// 通过 ID 查找视图组件pageBack = findViewById(R.id.page_back);etName = findViewById(R.id.et_name);etPassword = findViewById(R.id.et_password);tvPhone = findViewById(R.id.tv_phone);btnSave = findViewById(R.id.btn_save);userHelper = new UserHelper(this); // 创建 UserHelper 实例}/*** 设置监听器*/private void setUpListeners() {// 设置返回按钮的点击事件pageBack.setOnClickListener(v -> finish());// 设置保存按钮的点击事件btnSave.setOnClickListener(v -> saveUserInfo());}

四、项目完整源码

👇👇👇👇👇快捷获取方式👇👇👇👇👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/144295.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

软件安全最佳实践:首先关注的地方

尽管组织拥有大量可用的工具&#xff0c;但应用程序安全性仍然不足。 最近的数据显示&#xff0c;在过去四到五年中&#xff0c;软件供应链攻击同比增长了 600-700%&#xff0c;超过一半的美国企业在过去 12 个月中遭受过某种形式的软件供应链攻击。 为何应用程序安全工作未…

LeetCode[中等] 142. 环形链表 II

给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整…

Elasticsearch:一次生产集群 ES Watcher 失效的深度排查与分析 - 全过程剖析与解决方案

作者&#xff1a;尚雷&#xff0c;TechTalk 技术交流社区创办者 一次生产集群 ES Watcher 失效的深度排查与分析 全过程剖析与解决方案​​ 一、Elasticsearch Watcher 介绍 1.1 Watcher 概念概述 Watcher 是 Elasticsearch 提供的一项监控和告警服务&#xff0c;允许用户定义…

末端回路漏电监测仪为何不可或缺?

末端回路漏电监测仪 接地故障保护器 智能电力继电器 智能型剩余电流继电器 智能动作保护器 在2022年8月14日一个寻常的午后&#xff0c;庄南地的一片豆角田边&#xff0c;发生了一场令人痛心的意外。杨某与其父亲杨某某正忙于灌溉作物&#xff0c;却不料&#xff0c;一场本可避…

Vue3.0组合式API:依赖注入provide和inject实现跨层组件的通信

Vue3.0组合式API系列文章&#xff1a; 《Vue3.0组合式API&#xff1a;setup()函数》 《Vue3.0组合式API&#xff1a;使用reactive()、ref()创建响应式代理对象》 《Vue3.0组合式API&#xff1a;computed计算属性、watch监听器、watchEffect高级监听器》 《Vue3.0组合式API&…

TypeScript异常处理

1.异常的概念 程序运行中意外发生的情况就成为异常 例子&#xff1a; //除法运算function chu(num1:number,num2:number){if(num20){//throw 抛出异常throw new Error(除数不能为零)}let num:numbernum1/num2console.log(num) }//程序出现异常后会停止运行// 捕获异常try{ /…

论文《Mixture of Weak Strong Experts on Graphs》笔记

【Mowst 2024 ICLR】论文提出了一种新的图神经网络架构&#xff0c;称为Mixture of weak and strong experts&#xff08;Mowst&#xff09;&#xff0c;通过将轻量级的多层感知机&#xff08;MLP&#xff09;作为弱专家和现成的GNN作为强专家相结合&#xff0c;以处理图中的节…

Linux云计算 |【第四阶段】NOSQL-DAY1

主要内容&#xff1a; NoSQL概述&#xff08;RDBMS、NoSQL&#xff09;、部署Redis服务、Redis数据类型&#xff08;字符串、散列类型、列表类型、集合类型、有序集合类型&#xff09;、Redis其它操作命令、修改Redis服务运行参数、部署支持PHP和Redis的Nginx服务器 一、NoSQL…

4G模组SIM双卡切换是徒增成本,还是未雨绸缪?

初学开发的小伙伴提出疑问&#xff1a;手机双卡可以理解&#xff0c;物联网设备有必要双卡吗&#xff0c;会不会太浪费&#xff1f; 但在实际应用中&#xff0c;双卡是必需的。 在使用4G模组双卡功能的场景下&#xff0c;切换卡槽更是一个关键环节——关乎设备在不同网络环境…

【设计模式-享元】

Flyweight Pattern&#xff08;享元模式&#xff09; 是一种结构型设计模式&#xff0c;旨在通过共享对象来减少内存使用和提高性能。享元模式特别适用于需要大量相似对象的场景&#xff0c;可以有效地减少内存开销。 核心思想 享元模式通过将对象的共享部分&#xff08;共享…

关于单片机的技术原理及应用

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///C爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于单片机的技术原理及应用的相关内容&…

ANSYS Workbench蜂窝板泰森多边形Voronoi结构建模

在ANSYS Workbench内基于Voronoi算法建立泰森多边形蜂窝状结构板模型可采用CAD Voronoi插件建模后将模型导入。 在插件内设置好模型参数后运行&#xff0c;插件会自动在CAD内完成Voronoi图形的绘制。 将长方形与Voronoi晶格分别生成面域并做差集&#xff0c;形成Voronoi框架…

【JAVA开源】基于Vue和SpringBoot的校园美食分享平台

本文项目编号 T 033 &#xff0c;文末自助获取源码 \color{red}{T033&#xff0c;文末自助获取源码} T033&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

多层感知机paddle

多层感知机——paddle部分 本文部分为paddle框架以及部分理论分析&#xff0c;torch框架对应代码可见多层感知机 import paddle print("paddle version:",paddle.__version__)paddle version: 2.6.1多层感知机&#xff08;MLP&#xff0c;也称为神经网络&#xff0…

Visual Studio-X64汇编编写

纯64位汇编&#xff1a; includelib ucrt.lib includelib legacy_stdio_definitions.lib includelib user32.libextern printf:proc extern MessageBoxA:proc.data szFormat db "%s",0 szHello db "HelloWorld",0 szRk db "123",0.code start p…

鸿蒙生态应用

鸿蒙生态应用开发核心概念 HarmonyOS 应用&#xff1a;使用 HarmonyOS SDK 开发的应用程序&#xff0c;能够在华为终端设备 &#xff08;如&#xff1a;手机、平板等&#xff09;上运行&#xff0c;其有两种形态&#xff1a; ⚫ 传统方式的需要安装的 App。 ⚫ 轻量级&#xf…

碎纸片的自动拼接复原技术

摘要&#xff1a;破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。目前发现对碎纸片的拼接大部分由人工完成&#xff0c;准确率较高&#xff0c;但耗费大量人力财力及时间&#xff0c;效率很低。随着计算机技术的发展&#xff0c;人们试图…

java 解析excel

在Java中解析Excel文件&#xff0c;可以使用Apache POI库。以下是一个简单的例子&#xff0c;展示如何使用Apache POI读取一个Excel文件&#xff08;假设为.xlsx格式&#xff09;的内容。 首先&#xff0c;确保你的项目中包含了Apache POI的依赖。如果你使用Maven&#xff0c;…

结构体易忘点

结构体初始化 当我们去初始化一个结构体的时候&#xff0c;我们常常会按变量顺序初始化&#xff0c;但其实也可以不按顺序&#xff0c;同时也可以部分数据初始化。 结构体对齐 结构体里面的成员有一定的对齐规则&#xff0c;他不是每一个空间都存着有效数据的&#xff0c;有些…

综合时如何计算net delay?

在PR阶段&#xff0c;互连线的延迟可以通过抽取net的rc值计算得到。而在综合阶段&#xff0c;因为没有实际的布局布线&#xff0c;便无法去抽取net上的rc值。那么&#xff0c;线负载模型&#xff08;wire load model&#xff09;便派上用场了。 所谓线负载模型&#xff0c;就是…