【问题标题】:NavigationView onNavigationItemSelected is not called未调用 NavigationView onNavigationItemSelected
【发布时间】:2019-05-21 17:57:41
【问题描述】:

昨天我设置了我的第一个 NavigationView,我想向菜单项添加侦听器。我试图这样做:Android Kotlin - Can't call onNavigationItemSelected method 但似乎没有调用 onNavigationItemSelected。

我做了什么。

1.我在主类中添加了 NavigationView.OnNavigationItemSelectedListener:

class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {

2.设置监听器:

val mNavigationView = findViewById<View>(R.id.nav_view) as NavigationView
            mNavigationView.setNavigationItemSelectedListener(this)

3.overided方法onNavigationItemSelected

override fun onNavigationItemSelected(item: MenuItem): Boolean {
    Log.d(LOG_TAG, "hello there")
    return true
}

我希望它应该这样做,但它可能没有被调用。 你能帮帮我吗?

【问题讨论】:

  • P.S.你可以只写 val mNavigationView = findViewById(R.id.nav_view)

标签: android kotlin


【解决方案1】:

因此,问题是由为登录用户创建新活动引起的。

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

    val mNavigationView = findViewById<View>(R.id.nav_view) as NavigationView
    mNavigationView.setNavigationItemSelectedListener(this)

    //start login action
    // In the future I will check here some session, but for debbuging I want to log every time
    if(true){
        val intent = Intent(applicationContext, LoginActivity::class.java)
        startActivity(intent)
    }

登录后,我将视图更改为主视图,但没有完成登录活动。因此,在将视图更改回主视图后,我所要做的就是调用 finish()。

activity.setContentView(R.layout.activity_main_with_nav);
activity.finish()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    相关资源
    最近更新 更多