【发布时间】: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