android 无法理解片段管理器

8xiog9wr  于 2023-03-11  发布在  Android
关注(0)|答案(1)|浏览(118)

我尝试使用SupportFragmentManager添加一个片段,但是add函数以红色突出显示。这段代码在另一个项目中工作。可能是我不理解的东西。整个问题在图片中可见。
“添加”有问题
错误:无法使用所提供的参数调用以下函数。

package com.example.homework4_task1.presentation.main

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.core.view.WindowCompat
import androidx.fragment.app.commit
import androidx.fragment.app.add
import com.example.homework4_task1.R
import com.example.homework4_task1.presentation.main.fragments.MainFragment

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        fitContentViewToInsets()

        supportFragmentManager.commit {
            add<MainFragment> { 
                R.id.container
            }
        }
    }

    private fun fitContentViewToInsets() {
        WindowCompat.setDecorFitsSystemWindows(window, false)
    }

}
dependencies {

    implementation 'androidx.core:core-ktx:1.7.0'
    implementation 'androidx.appcompat:appcompat:1.6.1'
    implementation 'com.google.android.material:material:1.8.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    implementation 'androidx.fragment:fragment-ktx:1.5.5'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.5'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
}

something wrong

hec6srdp

hec6srdp1#

我认为问题是你在结尾用了lambda我能找到唯一相似之处是:

add<MainFragment>(R.id.container)

它实际上是一个扩展,您必须导入

import androidx.fragment.app.add

我认为问题出在lambda上,因为这意味着你传递了一个返回id(Int``@ResId)的函数,但是可用的方法总是需要一个id参数来知道在哪里附加片段。

相关问题