Android实验:Activity界面基础

news2024/11/20 9:14:36

目录

  • 前言
  • 实验目的
  • 实验内容
  • 实验要求
  • 代码实现
    • mainActivity
    • ResultActivity
    • activity_main
    • activity_result
  • 结果展示

前言

我们都知道,activity是Android中最重要的组件之一,关于activity的具体内容在这里就不多赘述,主打的就是一个主次分明,想具体了解可以阅读笔者前面的文章或者这篇文章,笔者认为描述的很详细
linkhttp://t.csdnimg.cn/YXOph

实验目的

1、 掌握Activity的基本功能;
2、 掌握preference的基本功能;
3、 掌握断点的设置,调试程序;

实验内容

任务1:通过intent实现跳转,完成Activity之间的跳转;
任务2:intent数据的传递;
任务3:采用用preference实现随数据的存储;
任务4:掌握在虚拟机和真机环境下,对程序的调试;

实验要求

1、实现Android界面,并通过intent实现跳转,界面显示学生的姓名,学号,email.
2、要求intent的实现传递姓名,学号,email等数据,到第二个activity;
3、同时要求可以在虚拟机及手机上运行结果;
4、采用preference实现对如上数据的存储,存储及读取。
5、学会如何设置断点,并学会debug模式下,调试程序。

代码实现

mainActivity

//mainActivity
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class mainActivity extends Activity {
    //定义控件变量
    private EditText etName;//姓名输入框
    private EditText etNumber; // 学号输入框
    private EditText etEmail; // email输入框
    private Button btnSubmit; // 提交按钮

    @SuppressLint({"WrongViewCast", "MissingInflatedId"})
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 初始化控件变量
        etName = findViewById(R.id.et_name);
        etNumber = findViewById(R.id.et_number);
        etEmail = findViewById(R.id.et_email);
        btnSubmit = findViewById(R.id.btn_submit);

        // 设置按钮的点击事件监听器
        btnSubmit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 获取输入框中的数据
                String name = etName.getText().toString();
                String number = etNumber.getText().toString();
                String email = etEmail.getText().toString();

                // 创建一个intent对象,用于跳转到ResultActivity
                Intent intent = new Intent(mainActivity.this, ResultActivity.class);

                // 将数据放入intent中,使用键值对的形式
                intent.putExtra("name", name);
                intent.putExtra("number", number);
                intent.putExtra("email", email);

                // 启动ResultActivity
                startActivity(intent);
            }
        });
    }
}


ResultActivity

// ResultActivity.java
// 这个类是程序的第二个界面,用于显示从MainActivity传递过来的数据
// 采用preference实现对数据的存储和读取


import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.TextView;

public class ResultActivity extends mainActivity {

    // 定义控件变量
    private TextView tvName; // 姓名显示框
    private TextView tvNumber; // 学号显示框
    private TextView tvEmail; // email显示框

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_result);

        // 初始化控件变量
        tvName = findViewById(R.id.tv_name);
        tvNumber = findViewById(R.id.tv_number);
        tvEmail = findViewById(R.id.tv_email);

        // 获取从MainActivity传递过来的intent对象
        Intent intent = getIntent();

        // 从intent中获取数据,使用相同的键名
        String name = intent.getStringExtra("name");
        String number = intent.getStringExtra("number");
        String email = intent.getStringExtra("email");

        // 将数据显示在控件上
        tvName.setText("姓名:" + name);
        tvNumber.setText("学号:" + number);
        tvEmail.setText("邮箱:" + email);

        // 获取一个SharedPreferences对象,用于存储数据
        SharedPreferences sp = getSharedPreferences("student_info", MODE_PRIVATE);

        // 获取一个SharedPreferences.Editor对象,用于编辑数据
        SharedPreferences.Editor editor = sp.edit();

        // 将数据写入SharedPreferences中,使用相同的键名
        editor.putString("name", name);
        editor.putString("number", number);
        editor.putString("email", email);

        // 提交数据的修改
        editor.apply();

        // 调用show方法,从SharedPreferences中读取并打印数据
        show();
    }

    public void show() {
        // 获取一个SharedPreferences对象,用于读取数据
        SharedPreferences sp = getSharedPreferences("student_info", MODE_PRIVATE);

        // 从SharedPreferences中获取数据,使用相同的键名,如果没有找到,则使用默认值""
        String name = sp.getString("name", "");
        String number = sp.getString("number", "");
        String email = sp.getString("email", "");

        // 打印数据到控制台上,方便调试
        System.out.println("姓名:" + name);
        System.out.println("学号:" + number);
        System.out.println("邮箱:" + email);
    }
}

activity_main

<?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">
    <!-- 姓名输入框 -->
    <EditText
        android:id="@+id/et_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入姓名" />

    <!-- 学号输入框 -->
    <EditText
        android:id="@+id/et_number"
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:hint="请输入学号" />

    <!-- email输入框 -->
    <EditText
        android:id="@+id/et_email"
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:hint="请输入邮箱" />

    <!-- 提交按钮 -->
    <Button
        android:id="@+id/btn_submit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="提交" />
</LinearLayout>

activity_result

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

    <!-- 姓名显示框 -->
    <TextView
        android:id="@+id/tv_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <!-- 学号显示框 -->
    <TextView
        android:id="@+id/tv_number"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <!-- email显示框 -->
    <TextView
        android:id="@+id/tv_email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

当然别忘记在mainifest中注册自己写好的页面,不然识别不到哦
在这里插入图片描述

结果展示

在这里插入图片描述
在这里插入图片描述
点击提交
提交后

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

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

相关文章

使用 PYTORCH 进行图像风格迁移

一、介绍 本教程介绍如何实现 由 Leon A. Gatys、Alexander S. Ecker 和 Matthias Bethge 开发的神经风格算法。神经风格或神经传输允许您拍摄图像并以新的艺术风格再现它。该算法采用三幅图像&#xff0c;即输入图像、内容图像和风格图像&#xff0c;并将输入更改为类似于内容…

西门子精彩触摸屏SMART LINE V4 面板使用U盘下载项目程序的具体方法示例

西门子精彩触摸屏SMART LINE V4 面板使用U盘下载项目程序的具体方法示例 WinCC flexible SMART V4 SP1 软件针对SMART LINE V4 面板新增了使用U盘下载项目功能。 注意:“使用U盘下载项目”功能仅支持触摸屏OS版本为V4.0.1.0 及以上的设备。 使用U盘下载项目的步骤可参考以下内…

【汇编】内存的读写与地址空间、寄存器及数据存储

文章目录 前言一、CPU对存储器的读写1.1 cpu对存储器的读写如何进行&#xff1f;1.2 演示 二、内存地址空间三、将各类存储器看作一个逻辑存储器——统一编址内存地址空间的分配方案 三、CPU的组成寄存器是CPU内部的信息存储单元通用寄存器--AX为例“横看成岭侧成峰“ 四、“字…

Vue3 Computed属性

一、引入computed import { computed } from vue; 二、计算属性的使用 &#xff08;一&#xff09;计算属性简写形式 计算属性 computed( ()> { return 计算属性值 }) setup() {let nums reactive({ten: 0, // 十位unit: 0, // 个位});nums.sum computed(() > {re…

C#,数值计算——函数计算,Ratfn的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { public class Ratfn { private double[] cofs { get; set; } private int nn { get; set; } private int dd { get; set; } public Ratfn(double[] num, double[] den) { …

Python 如何实现组合(Composite)设计模式?什么是组合设计模式?

什么是组合&#xff08;Composite&#xff09;设计模式&#xff1f; 组合&#xff08;Composite&#xff09;设计模式是一种结构型设计模式&#xff0c;它允许客户端使用单一对象和组合对象&#xff08;对象的组合形成树形结构&#xff09;同样的方式处理。这样&#xff0c;客…

Ubuntu22.04源码安装ROS-noetic(ROS1非ROS2),编译运行VINS-MONO

1. Ubuntu22.04源码编译安装ROS-noetic 由于22.04默认安装ROS2&#xff0c;但很多仓库都是基于ROS1的&#xff0c;不想重装系统&#xff0c;参考这两个博客安装了ROS-noetic&#xff1a; 博客1. https://blog.csdn.net/Drknown/article/details/128701624博客2. https://zhua…

php 插入排序算法实现

插入排序是一种简单直观的排序算法&#xff0c;它的基本思想是将一个数据序列分为有序区和无序区&#xff0c;每次从无序区选择一个元素插入到有序区的合适位置&#xff0c;直到整个序列有序为止 5, 3, 8, 2, 0, 1 HP中可以使用以下代码实现插入排序算法&#xff1a; functi…

“具有分布式能源资源的多个智能家庭的能源管理的联邦强化学习”文章学习一

一、摘要 本文提出了一种新型的联邦强化学习&#xff08;FRL&#xff09;方法&#xff0c;用于管理带有家电、太阳能光伏系统和储能系统的多个智能家庭的能源。 所提出的FRL方法的创新点在于开发了一种由本地家庭能源管理系统(LHEMS)和全局服务器(GS)组成的分布式深度强化学习(…

2023-11-15 LeetCode每日一题(K 个元素的最大和)

2023-11-15每日一题 一、题目编号 2656. K 个元素的最大和二、题目链接 点击跳转到题目位置 三、题目描述 给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。你需要执行以下操作 恰好 k 次&#xff0c;最大化你的得分&#xff1a; 从 nums 中选择一个元素 m 。将选中…

保姆级前端翻牌效果(CSS)

效果 翻牌效果 hover 时候 代码直接上 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document<…

【ArcGIS Pro微课1000例】0032:创建具有指定高程Z值的矢量数据

本文讲解ArcGIS Pro中创建具有指定高程值的矢量数据的两种方法。 文章目录 一、独立创建1. 新建地图场景2. 新建shapefile3. 绘制多边形4. 添加高程字段5. 三维显示二、基于高程源创建1. 创建栅格范围2. 添加Z值字段3. 添加Z信息4. 要素更新Z值一、独立创建 1. 新建地图场景 …

编辑器vim和编译器gcc/g++

目录 一、编辑器vim 1、概念 2、基本操作 1、进入vim 2、模式切换 3、命令行模式 4、插入模式 5、底行模式 6、vim 的配置 二、编译器gcc/g 1、概念 2、背景知识 3、gcc/g中的编译链接 1、预处理 2、编译 3、汇编 4、链接 4、函数库 1、静态库 2、动态库 一…

创新的Sui项目在CoinDCX的Unfold 2023黑客松中获奖

近日&#xff0c;在印度班加罗尔&#xff08;Bengaluru&#xff09;&#xff0c;超过2500人参加了CoinDCX组织的综合性Web3活动Unfold 2023。作为讨论、聚会和活动的一部分&#xff0c;进行了一次多链黑客松&#xff0c;Sui联合赞助了该活动。所有团队&#xff0c;无论他们构建…

python 爬虫之urllib 库的相关模块的介绍以及应用

文章目录 urllib.request 模块打开 URL&#xff1a;发送 HTTP 请求&#xff1a;处理响应&#xff1a; 应用如何读取并显示网页内容提交网页参数使用HTTP 代理访问页面 urllib.request 模块 在 Python 中&#xff0c;urllib.request 模块是用于处理 URL 请求的标准库模块之一。…

CSS 实现新拟态(Neumorphism) UI 风格

什么是新拟态(Neumorphism) UI 风格&#xff1f;网上似乎还没有一个准确统一的定义。按照我个人的通俗理解&#xff0c;就是将界面的一部分凸起来&#xff0c;另一部分凹下去&#xff0c;形成的一种错落有致的拟物风格。代表作是乌克兰设计师 Alexander Plyuto 在各平台发布的新…

μC/OS-II---内存管理2(os_core.c)

流程---内存管理扩展 初始化μC/OS-II创建用户起始任务开始多任务调度统计Task创建用户应用程序任务 初始化μC/OS-II void OSInit (void) {OSInitHookBegin(); /* Call port specific initialization code */OS_InitMisc(); …

算法笔记-第七章-链表(未完成)

算法笔记-第七章-链表 链表的遍历链表结点的个数链表的头插法!链表删除元素链表反转例题思路一:原地反转思路二:头插法链表去除重复元素(有些复杂了)思路题目一题目二链表的遍历 #include<cstdio> const int N = 100; struct Node {int data, next;//表示的是当前数据和…

C++语言相关笔记

写在前面 记录一下C的要点&#xff0c;参考的书籍如下&#xff1a; 《C Primer Plus》是偏向教学的工具书&#xff0c;可以视为偏基础&#xff1b;《C Primer》 是偏向工程实践的工具书&#xff0c;可以视为偏进阶&#xff1b;《深度探索C对象模型》则针对C对象模型进行剖析&…

flutter背景图片设置

本地图片设置 1、在配置文件pubspec.yaml中&#xff0c;设置以下代码 assets:- assets/- assets/test/2、如果目录中没有assets文件夹&#xff0c;则创建一个文件夹&#xff0c;并且取名为assets&#xff0c;在此文件夹中存放图片资源即可&#xff0c;如果想分文件夹管理&…