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

问题描述 投票:-2回答:1

我正在尝试为我的朋友制作一个应用程序,这个错误不会消失。我需要在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行)

android android-studio android-fragments
1个回答
0
投票

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

如果你想要替换一个片段,只需在你的活动中在kotlin中定义这个函数

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

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

fragmentManager.replaceFragment(R.id.flContainer, PrayerTime())
© www.soinside.com 2019 - 2024. All rights reserved.