Android 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:

我是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 = 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。虽然此代码可能会回答此问题,但提供有关此代码为什么和/或如何回答此问题的其他上下文将提高其长期价值。