NavigationItemSelectedListener не вызывается при использовании нескольких интерфейсов

#android #kotlin

#Android #kotlin

Вопрос:

У меня есть панель навигации в моей основной деятельности, и я реализую 2 дополнительных интерфейса в этом классе. Когда я пытаюсь реализовать 3-й, мой OnNavigationItemSelectedListener не вызывается.

Ниже приведен мой код

 class MainActivity : AppCompatActivity(),

NavigationView.OnNavigationItemSelectedListener,
ProjectListSelectionListener, IProgressViewLoader
{

  private var selectProjectData: ProjectDetails? = null
  private lateinit var progressView: View

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

    setSupportActionBar(toolbar)

    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)
    setNavMenus()

    changeMainView(-1)
  }
}
  

И именно здесь я установил прослушиватель фрагментов

 override fun onNavigationItemSelected(item: MenuItem): Boolean {
        fragment = ProjectListFragment().apply {
                selectionListener = this@MainActivity
                progressLoader = this@MainActivity
         }
        drawer_layout.closeDrawer(GravityCompat.START)
        return true
    }
  

Если я удалю эту строку progressLoader = this@MainActivity , это сработает. Также, если я удалю IProgressLoader, это также сработает. Что я здесь делаю не так?

Комментарии:

1. Какую ошибку вы видите?

2. Ошибки нет. onNavigationItemSelected() эта забава никогда не вызывается, когда я пытаюсь реализовать IProgressLoader и ProjectSelectionListener вместе

3. Вы установили OnNavigationItemSelectedListener ? Куда вы звоните navigationView.setOnNavigationItemSelectedListener(this) ?

4. я называю это onCreate fun. Проблема возникает, когда мне нравится этот фрагмент = ProjectListFragment().apply { selectionListener = this@MainActivity }

5. Добавьте onCreate удовольствия MainActivity и часть того, ProjectListFragment куда вы звоните onNavigationItemSelected() .