Day 5 | Fragment

Fragment(碎片)是Activity中可重复利用的使用者介面,必须依附於Activity,因此Activity的生命周期会影响到Fragment的生命周期。

生命周期(lifecycle)

  • onCreate():产生新的Activity时呼叫,此周期用於定义Layout。
  • onRestart():从onStop()变成onStart()前呼叫。例如:使用者返回页面。
  • onStart():在onCreate()或onRestart()後呼叫,此时画面已可见。
  • onResume(): 画面可与使用者互动时呼叫。
  • onPause():画面暂停时叫。例如:使用者准备离开页面,此周期用於将画面资料保存
  • onStop():画面停时呼叫。例如:使用者离开画面,此时画面已不可见。
  • onDestroy():在页面销毁时呼叫,此周期用於释放占用的资源。
  • onCreateView()::产生新的Fragment时呼叫,此周期用於定义Layout
  • onActivityCreated():在onCreateView()後呼叫,此时Fragment与Activity已建立关联
  • onDestroyView():当画面移除与 Fragment相关联的 Layout时呼叫。
  • onDetach():当Activity与Fragment 解除关联时呼叫。

日志(log)

Log等级详细度:Verbose>Debug>Info>Warm>Error>Assert,除Assert的方法为Log.wtf()外,其他的方法皆为等级英文缩写,如Debug的方法为Lod.d()

Log方法有两个参数,分别为Tag与Massage

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
				//建立Warm等级的Log
				Log.w("MainActivity","onCreate")
    }
}

可在Android Studio下方的[Logcat]看到已纪录的Log。

建立Fragment

  1. File → New → Kotlin File/class,输入档名後,会得到一个空白的类别档案
  2. 撰写该类别档案使其继承Fragment
class FirstFragment : Fragment(){
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        //定义Fragment画面
        return super.onCreateView(inflater, container, savedInstanceState)
    }

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        //主程序写下方
    }
}

滑动页面(ViewPager)

使用者可透过左右滑动的手势来切换页面,必须搭配对应的PagerAdapter类别来实现滑动页面的功能。


<<:  [Day 5] lock-free stack

>>:  5.unity图片分割(Slice Sprite)、tile绘制技巧

Day29 procfs, sysfs, debugfs

前言 讲完了复杂了中断处理,铁人赛的倒数第二天,要来看看一些虚拟的文件系统了,首先是 procfs ...

Day30 Flutter Camera、播放影片

铁人赛完赛了... 很抱歉没有完成一开始订的完成一个旅游App 的目标,最终只能算是完成Flutte...

[Day10] Hold Shift to Check Multiple Checkboxes

[Day10] Hold Shift to Check Multiple Checkboxes ch...

前导:乱聊

大家好我是小雨,没想到时隔两年还有机会与铁人们一起磨练~ 刚好最近在「折腾」unRaid,又看到铁人...