Android kotlin中的片段实例化
我是kotlin的新手,我想在kotlin中创建以下代码:Android kotlin中的片段实例化,android,android-fragments,kotlin,Android,Android Fragments,Kotlin,我是kotlin的新手,我想在kotlin中创建以下代码: Fragment fragment = null; switch(id) { case R.id.nav_new: fragment = new FragAllPosts(); break; case R.id.nav_about: fragment = new FragAuthors(); break; case R.id.nav_tags:
Fragment fragment = null;
switch(id) {
case R.id.nav_new:
fragment = new FragAllPosts();
break;
case R.id.nav_about:
fragment = new FragAuthors();
break;
case R.id.nav_tags:
fragment = new FragTags();
break;
}
if (fragment != null) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.content_frame, fragment);
ft.commit();
}
这些片段非常基本,还不包含任何参数。
我如何在kotlin实现上述目标?谢谢 您可以以以下代码段为例:
var fragment: Fragment? = null
when(id) {
R.id.nav_new -> fragment = FragAllPosts()
R.id.nav_about -> fragment = FragAuthors()
R.id.nav_tags -> fragment = FragTags()
}
if(null != fragment) {
val ft = fragmentManager.beginTransaction();
ft.replace(R.id.content_frame, fragment);
ft.commit();
}
希望对你有帮助
var fragment: Fragment? = null
when (id) {
R.id.nav_new -> fragment = FragAllPosts.newInstance()
R.id.nav_about -> fragment = FragAuthors.newInstance()
R.id.nav_tags -> fragment = FragTags.newInstance()
}
// activity use supportFragmentManager
// fragment use childFragmentManager
fragment?.apply {
supportFragmentManager?.beginTransaction()?.replace(R.id.content_frame, this)?.commit()
}
// Example class fragment create newInstance function
class FragAllPosts : Fragment() {
companion object {
fun newInstance(bundle: Bundle? = null): FragAllPosts = FragAllPosts().apply {
arguments = bundle
}
}
}
假设您使用的是Android Studio,为什么不直接将代码片段粘贴到Kotlin文件中呢?IDE将自动将其转换为正确的Kotlin代码。或者,您可以将其写入Java文件,然后按Ctrl+Alt+Shift+K将整个文件转换为Kotlin。虽然此代码可能会回答此问题,但提供有关此代码为什么和/或如何回答此问题的其他上下文将提高其长期价值。