kotlin中的类型不匹配

时间:2017-07-04 09:23:23

标签: android android-fragments kotlin

我是Kotlin语言和面向对象编程的新手,所以我想知道为什么在android中从类Fragment()继承的类的实例是错误的。这些是我的代码

Fragment.kt

class MainActivity : AppCompatActivity() {
val fm : Fragment? = MyFragment()
...
}

MainActivity.kt

{{1}}

为什么fm返回 MyFragment 类型,而不是片段?? 谢谢

2 个答案:

答案 0 :(得分:1)

我非常愚蠢,我为Fragment()

导入了2个不同的包

解决方案是必须导入2个文件android.app.Fragment

答案 1 :(得分:0)

使用

 changeFragment(MyFragment())

方法应该是这样的

    fun changeFragment(f: Fragment, cleanStack: Boolean = false) {
    val ft = supportFragmentManager.beginTransaction();
    if (cleanStack) {
        clearBackStack();
    }        
    ft.replace(R.id.activity_base_content, f);
    ft.addToBackStack(null);
    ft.commit();
   }

    fun clearBackStack() {
    val manager = supportFragmentManager;
    if (manager.backStackEntryCount > 0) {
        val first = manager.getBackStackEntryAt(0);
        manager.popBackStack(first.id, FragmentManager.POP_BACK_STACK_INCLUSIVE);
     }
     }