Android Studio Bug说新的未解决的参考

我试图为我的朋友做一个应用程序,这个错误不会消失。 我需要在3月6日之前完成应用程序,如果我不修复这个错误并完成剩下的工作,我不打算这样做。 此外,如果有一种方法,使nav_view不是一个特定的nav_,但每个nav_有。 所以我可以从nav_donate跳到nav_prayers或nav_donate到nav_events。

错误在页面的底部

package com.naifcenter.mohammad.naifcenter import android.app.FragmentManager import android.os.Bundle import android.support.design.widget.Snackbar import android.support.design.widget.NavigationView import android.support.v4.view.GravityCompat import android.support.v7.app.ActionBarDrawerToggle import android.support.v7.app.AppCompatActivity import android.view.Menu import android.view.MenuItem import kotlinx.android.synthetic.main.activity_home_page.* import kotlinx.android.synthetic.main.app_bar_home_page.* class HomePage : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_home_page) setSupportActionBar(toolbar) fab.setOnClickListener { view -> Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show() } val toggle = ActionBarDrawerToggle( this, drawer_layout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close) drawer_layout.addDrawerListener(toggle) toggle.syncState() nav_view.setNavigationItemSelectedListener(this) } override fun onBackPressed() { if (drawer_layout.isDrawerOpen(GravityCompat.START)) { drawer_layout.closeDrawer(GravityCompat.START) } else { super.onBackPressed() } } override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.home_page, menu) return true } override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { R.id.action_settings -> return true else -> return super.onOptionsItemSelected(item) } } override fun onNavigationItemSelected(item: MenuItem): Boolean { android.app.FragmentManager fragmentManager = getFragmentManager(); when (item.itemId) { R.id.nav_prayer_rug -> { fragmentManager.beginTransaction() .replace(R.id.nav_view ,new prayertime()) .commit() } R.id.nav_calendar -> { fragmentManager.beginTransaction() .replace(R.id.nav_view ,new calendar()) .commit() } R.id.nav_donate -> { fragmentManager.beginTransaction() .replace(R.id.nav_view ,new donate()) .commit() } R.id.nav_projects -> { fragmentManager.beginTransaction() .replace(R.id.nav_view ,new projects()) .commit() } R.id.nav_social_media -> { fragmentManager.beginTransaction() .replace(R.id.nav_view ,new socialmedia ()) .commit() } R.id.nav_bugs -> { fragmentManager.beginTransaction() .replace(R.id.nav_view ,new bugs()) .commit() } R.id.nav_share -> { fragmentManager.beginTransaction() .replace(R.id.nav_view ,new share()) .commit() } R.id.nav_send -> { fragmentManager.beginTransaction() .replace(R.id.nav_view ,new contact()) .commit() } } drawer_layout.closeDrawer(GravityCompat.START) return true } } 

当前错误是分类器’FragmentManager’没有伴随对象,因此必须在这里初始化(第61行)

未解决的参考:新(第66,74,80,86,92,98,104,110)

你是非常混合java和kotlin,这是导致一些语法相关的错误。

如果你想替换一个片段,只需要在kotlin中做这样的事情在你的activity中定义这个函数

  fun FragmentManager.replaceFragment(containerId: Int, fragment: Fragment) { beginTransaction().replace(containerId, fragment).commit() } 

现在你可以调用这个扩展函数来从任何地方替换片段

 fragmentManager.replaceFragment(R.id.flContainer, PrayerTime())