首页 > 其他分享 >大创项目个人周报(2024.7.22—2024.7.28)

大创项目个人周报(2024.7.22—2024.7.28)

时间:2024-07-28 17:52:09浏览次数:17  
标签:Toast false 22 2024.7 代码 启动 28 Intent Activity

本周个人情况汇报

我本周主要学习了安卓开发的内容,根据《第一行代码Android》开展了学习。

一、分析自己的第一个Android程序

1

  • 通过看书,我对项目的各个文件的功能有了大致了解,除app目录外,大多数文件和目录是自动生成的,app目录是今后开发工作主要涉及的部分。app的结构如下。

2

  • 通过学习,我了解了项目运行的具体流程,详解了项目中的资源,并且学习掌握日志工具的使用。

二、学习Activity的使用

  • Activity是可以包含用户界面的组件,主要用于和用户进行交互。
    我手动创建了Activity并且学习创建和加载布局文件。
    3

按钮

在此编辑器里,通过XML文件编辑布局,添加一个按钮

<Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button 1"
    />

在Activity中加载布局

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.first_layout)
    }

在AndroidManifest文件中注册,以使Activity生效

<activity
            android:name=".FirstActivity"
            android:exported="true"
            android:label="This is FirstActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

效果如下
4

Toast

  • Toast是 Android 系统提供的一种非常好的提醒方式,在程序中可以使用它将一些短小的信息通知给用户,这些信息会在一段时间后自动消失,并且不会占用任何屏幕空间。

在onCreate中添加代码

val button1: Button = findViewById(R.id.button1)
        button1.setOnClickListener {
            Toast.makeText(this, "You clicked Button1", Toast.LENGTH_SHORT).show()
}

效果如下
5

菜单

在res目录下新建menu文件,添加代码

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/add_item"
        android:title="Add"/>
    <item
        android:id="@+id/remove_item"
        android:title="Remove"/>
</menu>

在FirstActivity中添加代码以使菜单显示并响应

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        menuInflater.inflate(R.menu.main, menu)
        return true
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        when (item.itemId) {
            R.id.add_item -> Toast.makeText(this, "You clicked Add", Toast.LENGTH_SHORT).show()
            R.id.remove_item -> Toast.makeText(this,"You clicked Remove", Toast.LENGTH_SHORT).show()
        }
        return true
    }

效果如下
7
8

销毁Activity

  • 将button1.setOnClickListener中的代码改作finish()即可在按下按钮后销毁Activity。

Intent

  • Intent 是 Android 程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。Intent一般可用于启动Activity、启动 Service以及发送广播等场景。书中本节所讲,即启动Activity。

  • 显式Intent方法如下
    首先创建SecondActivity,将布局代码替换如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button 2" />

</LinearLayout>

修改FirstActivity中的点击事件

button1.setOnClickListener {
            val intent = Intent(this, SecondActivity::class.java)
            startActivity(intent)
        }

执行程序,效果即点击Button1后自动跳转到Button2.

三、本周遇到的问题及利用chatGPT等AI工具的解决过程

在AndroidManifest文件中手动注册,以使Activity生效

<activity
            android:name=".FirstActivity"
            android:label="This is FirstActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

这一部分中,我的代码与书中示例的代码有不同,多了一句android:exported="false",而在我试图不改变这句代码,直接加进去其他代码,系统报错无法编译。故询问AI。
AI:

"android:exported="false" 用于控制一个活动是否可以被其他应用所启动。当设置为 "false" 时,表示该活动只能在启动它自身应用的上下文中被访问。也就是说,只有从同一个应用内部的其他活动、服务或广播接收器才可启动该活动。当设置为 "true",则表示该活动可以从其他应用进行启动。

如果你将一个活动的 android:exported 属性设置为 "false",那么从外部应用点击链接或通过其他应用的广播等方式都无法启动该活动。这种设置通常用于保护敏感功能,例如隐私相关的设置页面、支付页面或权限请求界面,防止外部应用滥用或不小心触发这些功能。

例如,假设你有一个活动专门用于显示用户的个人资料信息。你可能会希望控制只有从应用内部的其他功能(如用户主页或个人资料编辑页面)中启动,以确保用户数据安全和隐私保护。在这种情况下,设置 android:exported="false" 是非常合适的。

然而,在大多数情况下,如果一个活动需要被其他应用访问或启动,例如一些基本的用户界面活动(如主页、列表浏览等),通常会将其设置为 "true",以便提供更好的用户体验和应用集成。

我遂将false改作true,运行正常。

标签:Toast,false,22,2024.7,代码,启动,28,Intent,Activity
From: https://www.cnblogs.com/9q2z2z/p/18328596

相关文章

  • Adobe Illustrator 2024 v28.6 (macOS, Windows) - 矢量绘图
    AdobeIllustrator2024v28.6(macOS,Windows)-矢量绘图Acrobat、AfterEffects、Animate、Audition、Bridge、CharacterAnimator、Dimension、Dreamweaver、Illustrator、InCopy、InDesign、LightroomClassic、MediaEncoder、Photoshop、PremierePro、AdobeXD什么是......
  • 7月28日 竞彩足球!哈马比vs米亚尔比 维京vs莫尔德
    昨日复盘今日扫盘哈马比队,作为瑞典超级联赛的传统强队,凭借其在斯德哥尔摩索德尔体育场的主场优势,一直展现出强大的竞争力。本赛季,球队以稳定的表现,近6场联赛中取得了4胜1平1负的佳绩,防守端表现尤为出色,主场进攻力同样强劲。不过,在与米亚尔比队的交锋中,哈马比队本赛季首次对......
  • 【嵌入式DIY实例-ESP8266篇】- LCD ST7789显示BME280传感器数据
    LCDST7789显示BME280传感器数据文章目录LCDST7789显示BME280传感器数据1、硬件准备2、代码实现本文将介绍如何使用ESP8266NodeMCU开发板(ESP12-E模块)和BME280气压、温度和湿度传感器构建一个简单的气象站。NodeMCU微控制器(ESP8266EX)从BME280......
  • 【教学类-70-01】20240728一个茶壶两个茶杯(果茶)
    ‘背景需求:用通义万相下载简笔画茶壶、茶杯茶杯,简单笔画,卡通,黑白,未着色,幼儿插图,线条画,没有背景,没有颜色,黑白漫画线条艺术:,空背景,粗轮廓,清晰的线条,矢量线。简单,大,茶壶,简单笔画,卡通,黑白,未着色,幼儿插图,线条画,没有背景,没有颜色,黑白漫画线条艺术:,空背景,粗轮廓,清晰的线条,矢量......
  • 使用 Axios HTTP 客户端通过 GET 请求调用 FastAPI 后端时收到 422 错误响应
    我正在尝试从我的Vue3客户端(使用GETJavaScriptHTTP客户端)向FastAPI服务器发出axios请求,但我收到422unprocessableentity错误响应。据我了解,这种错误消息与错误的输入有关。这是vue3代码:import{authToken}from"../main.js"expo......
  • Midjourney提示词-动物系列-28
    steampunkanthropomorphicrealisticfoxwithninetails,realistic,volumetriclighting,render,photorealistic,hyperrealistic,ultraquality,8KoctanerenderHighlydetailedandbeautiful3Drendering,Portraitofthecutenine-tailedfoxinChina'......
  • [0289]基于JAVA的供应商订单智慧管理系统的设计与实现
    毕业设计(论文)开题报告表姓名学院专业班级题目基于JAVA的供应商订单智慧管理系统的设计与实现指导老师(一)选题的背景和意义选题背景与意义:随着信息技术的快速发展和广泛应用,企业在供应链管理中对效率、精准度和智能化的要求日益提高。特别是在企业采......
  • 组合数学学习笔记(一)(2024.7.3)
    一、组合数1.递推式$\displaystyle\binom{n}{m}=\displaystyle\binom{n-1}{m-1}+\displaystyle\binom{n-1}{m}$证:左边相当于从$n$个数中选$m$个数,右边枚举第$n$个数选不选。如果选,就从剩下$n-1$个数中选$m-1$个;如果不选,就从剩下$n-1$个数中选$m$个。2.对称性......
  • 「PA2022」Medrcy
    设\(f_i\)表示第\(i\)个人知道的咒语集合,\(c_i\)为其补集,那么第\(i\)个人第\(k\)天会离开当且仅当存在一个序列\(a_{1\simk-1}\),使得\(\bigcup\limits_{j=1}^{k-1}(f_i\cupf_{a_j})=\varnothing\),即\(\bigcap_{j=1}^{k-1}(c_i\capc_{a_j})=\text{U}\)。考虑连接......
  • LeetCode222.完全二叉树的节点个数
    题目链接:https://leetcode.cn/problems/count-complete-tree-nodes/description/题目叙述给你一棵完全二叉树的根节点root,求出该树的节点个数。完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该......