一,前言
每一项伟大的开始都有一个目的,嗯,我学习kotlin就是想做一个合金弹头,所以必需看懂app的主程序代码:
class MainActivity : AppCompatActivity() {
private lateinit var appBarConfiguration: AppBarConfiguration //这篇主要讲这句
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val toolbar: Toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar)
val fab: FloatingActionButton = findViewById(R.id.fab)
fab.setOnClickListener { view ->
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show()
}
val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
val navView: NavigationView = findViewById(R.id.nav_view)
val navController = findNavController(R.id.nav_host_fragment)
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
appBarConfiguration = AppBarConfiguration(
setOf(
R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow,
R.id.nav_tools, R.id.nav_share, R.id.nav_send
), drawerLayout
)
setupActionBarWithNavController(navController, appBarConfiguration)
navView.setupWithNavController(navController)
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inflate the menu; this adds items to the action bar if it is present.
menuInflater.inflate(R.menu.main, menu)
return true
}
override fun onSupportNavigateUp(): Boolean {
val navController = findNavController(R.id.nav_host_fragment)
return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
}
}
二,入门
唉唉唉,先别关,交个朋友,先目标分解,看懂一句
// private appBarConfiguration: AppBarConfiguration这局话在类里面报错
//加上lateinit 不报错,什么用,在我看看可以装B
private lateinit var appBarConfiguration: AppBarConfiguration`
先看下菜鸡教程怎么定义常量与变量
>可变变量定义:var 关键字
>var <标识符> : <类型> = <初始化值>
不可变变量定义:val 关键字,只能赋值一次的变量(类似Java中final修饰的变量)
val <标识符> : <类型> = <初始化值>
常量与变量都可以没有初始化值,但是在引用前必须初始化
编译器支持自动类型判断,即声明时可以不指定类型,由编译器判断。
val a: Int = 1
val b = 1 // 系统自动推断变量类型为Int
val c: Int // 如果不在声明时初始化则必须提供变量类型
c = 1 // 明确赋值
var x = 5 // 系统自动推断变量类型为Int
x += 1 // 变量可修改
对比下这句
var <标识符> : <类型> = <初始化值>
var appBarConfiguration: AppBarConfiguration
说到这里我们可以先了解kotlin里面的类型了
1,Kotlin 的基本数值类型包括 Byte、Short、Int、Long、Float、Double 等。
2,布尔用 Boolean 类型表示,它有两个值:true 和 false
3,数组用类 Array 实现
4,String 是不可变的,不可变,不可变,是一个独立的数据类型。
比较一下,AppBarConfiguration都不在,只剩下函数和类,自己写个小程序测试下
可以看出,确实是类(把Hero变成函数会报错,这点上python是可以指向的)