3-活动Activity

Activity的基本使用

从0开始创建一个Activity

  1. 首先需要创建一个基础的FirstActivity
  2. 创建一个layout
    类型是LinearLayout
    <!--    给页面中添加一个按钮-->
    <!-- 在first_layout.xml中添加代码 -->
    <!--    从上到下的含义依次是:-->
    <!--    id:这个按钮的唯一标识符,我们在代码里就是用这个找到按钮-->
    <!--    layout_width:指定按钮的宽度,match_parent(和父亲一样宽)-->
    <!--    layout_height:指定按钮的高度,wrap_content(刚好能包含按钮中的内容)-->
    <!--    text:按钮中的文本-->
    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button 1"/>
    
  3. 然后想要调用first_layout.xml
     //就需要去到Activity中的onCreate取引入这个布局
     setContentView(R.layout.first_layout)//在界面中引入这种布局
     //        在这里我们是直接引入的一个布局,但是我们一般会传入布局文件的id
     //        流程是:
     //        在项目中添加的资源都会在R文件中生成一个相应的id
     //        比如这里调用R.layout.first_layout就得到了first_layout.xml的id,然后就把id传到了setContentView()中
    
  4. 想要Activity能够在app中生效还需要配置AndroidManifest.xml
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.bo.a3_learnactivity"
         android:versionCode="1"
         android:versionName="1.0" >
    
         <uses-sdk
             android:minSdkVersion="21"
             android:targetSdkVersion="30" />
    
         <!-- Activity的注册要放在<application/>中 -->
         <!-- 当我们创建FirstActivity的时候必须要在AndroidManifest.xml声明 -->
         <application
             android:allowBackup="true"
             android:appComponentFactory="androidx.core.app.CoreComponentFactory"
             android:debuggable="true"
             android:icon="@mipmap/ic_launcher"
             android:label="@string/app_name"
             android:roundIcon="@mipmap/ic_launcher_round"
             android:supportsRtl="true"
             android:testOnly="true"
             android:theme="@style/Theme.3_LearnActivity" >
    
             <!-- android:name指定具体注册哪个Activity -->
             <!-- 但是此处的.FirstActivity是何含义? -->
             <!-- 其实是com.bo.a3_learnactivity.FirstActivity,只不过是最外层的<manifest>标签通过package指定了程序的包名是com.bo.a3_learnactivity -->
             <!-- 所以就只用写.FirstActivity -->
             <!-- android:label指定的是程序标题栏的内容 -->
             <activity
                 android:name=".FirstActivity"
                 android:exported="true"
                 android:label="This a FirstActivity" >
             <!--  android:exported是否支持其它应用调用当前组件-->
             <!-- 但是到这里还不能运Activity因为还没有指定哪个Activity先启动 -->
             <!-- 得添加两句代码 -->
             <intent-filter>
    
                 <!-- 把FirstActivity标记成主程序,首先打开的就是他 -->
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
             </activity>
         </application>
    
     </manifest>     
    

Toast使用

Toast是Android中提供的一种提醒方式,程序中可以使用他将一些短小的信息通知给用户,这些信息会在一段时间后自动消失,和js中的alert()效果一样

//需要定义一个弹出Toast的触发点,可以把按钮当作触发点
var button1: Button = findViewById(R.id.button1)//R.id.button1获取到button1的id
button1.setOnClickListener{
   
    Toast.makeText(this,"你点击了按钮",Toast.LENGTH_SHORT).show()
}
1. findViewById()方法获取到对应id的泛型对象(继承自View),所以kotlin是无法推断出他返回的到底是什么,所以需要显式定义
2. setOnClickListener()函数为按钮注册了一个监听器,监听到点击按钮,会执行监听器中的OnClick方法
3. makeText(context,text,时长)是一个静态方法,创建一个Toast,但是这需要三个参数
    context: Toast需要的上下文,Activity本身是一个Context对象,所以此处传入this
    text:文本内容
    时长:Toast.LENGTH_SHORT(短时间),Toast.LENGTH_LONG(长时间)
//    关于findViewById()函数
//    findViewById()作用是获取布局文件中控件的实例,本次中只有1个,那如果有10个呢,那就需要10个findViewById()
//   所以有了ButterKnife之类的第三方库
//   但是我们引入过插件kotlin-android-extensions,这个插件会根据布局文件自动生成一个具有相同名称的变量,我们就可以直接在Activity中使用这个变量
//                所以以上代码可简化
        button1.setOnClickListener{
   
            Toast.makeText(this,"你点击了按钮",Toast.LENGTH_SHORT).show()
        }

activity中使用menu

  1. res下面需要一个menu文件夹,下面新建一个menu文件(Menu resource file)
    menu中
    <!--    用item标签创建具体的菜单项-->
    <!--    android:id:给这个菜单项一个唯一的id-->
    <!--    android:title:给菜单项指定一个名称-->
    <item
        android:id="@+id/add_item"
        android:title="Add"/>
    <item
        android:id="@+id/remove_item"
        android:title="Remove"/>
    
  2.  //想要创建Menu就要重写onCreateOptionsMenu函数
     override fun onCreateOptionsMenu(menu: Menu?): Boolean {
         
         menuInflater.inflate(R.menu.main,menu)
         /*menuInflater在这儿里其实是调用了父类的getMenuInflater()方法,
         getMenuInflater()会得到一个menuInflater对象,在调用它的inflate(),就创建了一个菜单
         inflate()有两个参数:
             R.menu.main:指明要传入的资源文件,根据这个文件来创建菜单
             main:指明我们的菜单项将添加到哪个Menu对象中,这里直接使用onCreateOptionsMenu()传来的Menu
             return:false(不能显示),true:(可以显示)*/
         return true
     }
    
  3.  override fun onOptionsItemSelected(item: MenuItem): Boolean {
         
         when(item.itemId){
         //item.itemId获取Menu中Item的id,
             R.id.add_item->Toast.makeText(this,"add",Toast.LENGTH_SHORT).show()
             R.id.remove_item->Toast.makeText(this,"remove",Toast.LENGTH_SHORT).show()
         }
         //Menu和里面的菜单项都不需要用代码显式的去监听,Menu中的菜单项已经自动被监听了
         return true
     }
    

销毁一个Activity


                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值