#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()
.