【问题标题】:Intent on NavigationDrawerNavigationDrawer 的意图
【发布时间】:2020-11-12 05:48:33
【问题描述】:

我正在尝试为我的应用程序实现一个 navigationDrawer。经过大量研究,我找到了一种适合我的方法。它适用于本视频中给出的示例:https://www.youtube.com/watch?v=do4vb0MdLFY&t=363s。在视频中,他们给出了带有 Toast 消息的示例。我正在尝试创建一个意图。问题是我不能像在 Onclick 函数中那样做,因为他们使用 setNavigationItemSelectedListener。我无法设置 val intent =when(view.id),我需要这个 val 来使 startActivity(intent) 响应。在这段代码中,没有出现错误,但 startActivity 中的意图没有链接到 val 而是一些奇怪的库。我试图了解一种方法来扭转我的代码,以便它可以使我的意图成为链接我的活动。你有什么建议吗? 非常感谢您的帮助!

为了更清楚,这是我的 MainActivity.kt:


import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.system.Os.close
import android.system.Os.open
import android.view.MenuItem
import android.view.View
import android.widget.Toast
import androidx.appcompat.app.ActionBarDrawerToggle
import androidx.core.view.GravityCompat
import androidx.drawerlayout.widget.DrawerLayout
import com.google.android.material.navigation.NavigationView

class MainActivity : AppCompatActivity(){
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        setSupportActionBar(findViewById(R.id.toolbar))
        val drawer = findViewById<DrawerLayout>(R.id.drawer)
        val drawerToggle = ActionBarDrawerToggle(this, drawer, R.string.open, R.string.close)
        drawer.addDrawerListener(drawerToggle)
        drawerToggle.syncState()
        val navView= findViewById<NavigationView>(R.id.navigation_view)

        navView.setNavigationItemSelectedListener{
            when(it.itemId){
                R.id.nav_profile -> {
                  var intent=  Intent(this,ProfileActivity::class.java)
                }
              //  R.id.nav_profile -> Toast.makeText(applicationContext, "Clicked profile", Toast.LENGTH_LONG).show()
            }
            true
        }
        startActivity(intent)

        supportActionBar?.setDisplayHomeAsUpEnabled(true)
    }
//    override fun onNavigationItemSelected(menuItem: MenuItem): Boolean {
//        val drawer = findViewById<DrawerLayout>(R.id.drawer)
//        when (menuItem.itemId) {
//            R.id.nav_profile -> {
//               Intent(this,ProfileActivity::class.java)
//            }
//        }
//        drawer.closeDrawer(GravityCompat.START)
//        return true
//    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        val drawer = findViewById<DrawerLayout>(R.id.drawer)
        val drawerToggle = ActionBarDrawerToggle(this, drawer, R.string.open, R.string.close)
        if(drawerToggle.onOptionsItemSelected(item)){
            return true
        }
        return super.onOptionsItemSelected(item)
    }

    override fun onBackPressed() {
        val drawer = findViewById<DrawerLayout>(R.id.drawer)
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START)
        } else {
            super.onBackPressed()
        }
    }
} ```

【问题讨论】:

    标签: android android-intent navigation-drawer


    【解决方案1】:

    在这一行下面写 startActivity(intent)。

      R.id.nav_profile -> {
                      var intent=  Intent(this,ProfileActivity::class.java)
                       startActivity(intent)
                    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多