本文共 2993 字,大约阅读时间需要 9 分钟。
关注 ,免费获取全套安卓开发学习资料
Activity是整个看到的界面,而Activity则可以继续分割出多个Fragment. Fragment最初是为了在平板电脑充分利用空间,但是手机端也经常使用,主要目的是共用屏幕上某一块区域.
如下面一种界面,上面蓝色框是几个功能(推荐、应用、游戏等)共用的显示区域,当用户切换到不同的功能页时,就将共用显示区域内容替换为对应的功能Fragment.class BlankFragment : Fragment() { override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { return inflater.inflate(R.layout.fragment_blank, container, false) }}
下面演示点击button1按钮时,从MainActivity跳转到Main2Activity
replaceFragment(BlankFragment(), R.id.containerLayout)
完整代码如下:
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) replaceFragment(BlankFragment(), R.id.containerLayout) } private fun replaceFragment(fragment: Fragment, containerId: Int) = supportFragmentManager.beginTransaction().replace(containerId, fragment).commit()}
多个Fragment利用同一块区域进行内容展示,一般可以通过标签页进行切换.
class FirstFragment : Fragment() { override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { return inflater.inflate(R.layout.fragment_first, container, false) }}
class SecondFragment : Fragment() { override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { return inflater.inflate(R.layout.fragment_second, container, false) }}
下面代码中id为bottomLayout的布局,里面放了两个标签,用来点击切换页面上部containerLayout中的内容.
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) //默认加载第一个Fragment replaceFragment(FirstFragment(), R.id.containerLayout) //对page1Tv控件添加点击事件,点击后切换至FirstFragment page1Tv.setOnClickListener { replaceFragment(FirstFragment(), R.id.containerLayout) } //对page2Tv控件添加点击事件,点击后切换至SecondFragment page2Tv.setOnClickListener { replaceFragment(SecondFragment(), R.id.containerLayout) } } private fun replaceFragment(fragment: Fragment, containerId: Int) = supportFragmentManager.beginTransaction().replace(containerId, fragment).commit()}
关注头条号,第一时间获取最新文章:
转载地址:http://kzodf.baihongyu.com/