我的第一行Android代码-Activity

目录

1.主函数代码如下

2.Activity

2.1Activity的生命周期

2.2两种启动方式

2.3数据传递bundle

2.4Intent

1.主函数代码如下

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

遇到的问题:Android Studio报错:The binary version of its metadata is 1.5.1, expected version is 1.1.15._舒泱的博客-CSDN博客

2.Activity

2.1Activity的生命周期

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        Log.i("Activity生命周期","onCreate方法调用,第一次创建时进行调用")
    }

    override fun onStart() {
        super.onStart()
        Log.i("Activity生命周期","onStart方法调用,不可见变为可见的时候调用")
    }

    override fun onResume() {
        super.onResume()
        Log.i("Activity生命周期","onResume方法调用,进入到了前台,可以同用户进行交互了")
    }

    override fun onPause() {
        super.onPause()
        Log.i("Activity生命周期","onPause方法调用,启动另一个 Activity 的时候调用")
    }

    override fun onStop() {
        super.onStop()
        Log.i("Activity生命周期","onStop方法调用,Activity不可见且在内存中")

    }

    override fun onDestroy() {
        super.onDestroy()
        Log.i("Activity生命周期","onDestroy方法调用,Activity即将被销毁")
    }

    override fun onRestart() {
        super.onRestart()
        Log.i("Activity生命周期","onRestart方法调用,Activity重新切入前台")
    }
}

AndroidManifest中代码如下,注意:四大组件必须在AndroidManifest中注册才可以使用

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.RedDemo">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
  • android:name是对应Activity的类名称
  • android:label是Activity标题栏显示的内容. 现已不推荐使用
  • 是意图过滤器. 常用语隐式跳转
  • 是动作名称,是指intent要执行的动作
  • 是过滤器的类别 一般情况下,每个 中都要显示指定一个默认的类别名称,即<category android:name="android.intent.category.DEFAULT" /

 

2.2两种启动方式

1.显式启动:通过包名来启动

val intent = Intent(MainActivity.this,SecondActivity.class)
startActivity(intent);

2.隐式启动

AndroidManifest中注册使用

<activity android:name=".SecondActivity">
     <intent-filter>
         <action android:name="com.example.firstapp.action.SecondActivity" />
         <category android:name="com.example.firstapp.category.SecondActivity" />
         <category android:name="android.intent.category.DEFAULT" /> // 一定要有
     </intent-filter>
</activity>

2.3数据传递bundle

Bundle主要用于传递数据;它保存的数据,是以key-value(键值对)的形式存在的。

val bundle = Bundle()
bundle.putInt("key_int",100)
bundle.putString("key_string","key_string_value")
studyFragment.argments= Bundle

2.4Intent

1.显示intent

intent()

  • 第一个参数Context要求提供一个Activity的上下文
  • 第二个参数Class用于指定想要启动的目标Activity
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        Log.i("Activity生命周期","onCreate方法调用,第一次创建时进行调用")
        val button = findViewById<View>(R.id.myButton)
        button.setOnClickListener{
            //从当前Activity跳转到MyActivity
            val intent = Intent(this,MyActivity::class.java)
            //startActivity()方法专门用于启动Activity
            //他接受一个Intent参数
            startActivity(intent)
        }
    }
}

2.隐式intent

AndroidMainifest.xml中修改MyActivity的标签属性

<activity android:name=".MyActivity" android:label="MyActivity">
            <intent-filter>
                <!--指定当前Activity可以响应的action和category-->
                <action android:name="com.example.myapplication.ACTION_START"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.MYCAT"/>
            </intent-filter>
        </activity>
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        Log.i("Activity生命周期","onCreate方法调用,第一次创建时进行调用")
        val button = findViewById<View>(R.id.myButton)
        button.setOnClickListener{
            //将action的内容传入Intent
            val intent = Intent("com.example.myapplication.ACTION_START")
            //指定category(也可指定多个)
            intent.addCategory("android.intent.category.MYCAT")
            //启动能同时匹配上述action和category的Activity
            startActivity(intent)
        }
    }
}

只有actioncategory标签中的内容同时匹配Intent中的指定actioncategory时,这个Activity才能响应该Intent

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值