android - 在另一个活动中显示连接到一个活动的现有导航菜单
问题描述
我正在构建一个应用程序并在我的第一个活动中有一个导航菜单,但是,当我进入第二个活动时它没有显示,所以我应该从我的第一个活动中复制哪些代码用于导航菜单也显示在那里?
我试图将我认为是相关代码的部分从第一个活动复制到第二个活动中,但是第二个活动崩溃了,所以我尝试删除添加的代码但未能反转它,所以我将代码从备份导入到让它再次工作。
class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val toolbar: Toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar)
val fab: FloatingActionButton = findViewById(R.id.fab)
fab.setOnClickListener { view ->
val intent = Intent(this, Main2Activity::class.java)
val sharedPref = this?.getPreferences(Context.MODE_PRIVATE)
val mystr = sharedPref.getInt(getString(R.string.STR), 0)
intent.putExtra("data", mystr)
startActivity(intent)
}
val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
val navView: NavigationView = findViewById(R.id.nav_view)
val toggle = ActionBarDrawerToggle(
this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close
)
drawerLayout.addDrawerListener(toggle)
toggle.syncState()
navView.setNavigationItemSelectedListener(this)
//val db = FirebaseFirestore.getInstance()
}
override fun onBackPressed() {
val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
drawerLayout.closeDrawer(GravityCompat.START)
} else {
super.onBackPressed()
}
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inflate the menu; this adds items to the action bar if it is present.
menuInflater.inflate(R.menu.main, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
return when (item.itemId) {
R.id.action_settings -> true
else -> super.onOptionsItemSelected(item)
}
}
override fun onNavigationItemSelected(item: MenuItem): Boolean {
// Handle navigation view item clicks here.
when (item.itemId) {
R.id.nav_home -> {
// Handle the camera action
val i = Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/brobostigon/"))
startActivity(i)
}
R.id.nav_gallery -> {
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
}
R.id.nav_slideshow -> {
val intent = Intent(this, Main2Activity::class.java)
startActivity(intent)
}
R.id.nav_tools -> {
}
R.id.nav_share -> {
val i = Intent(Intent.ACTION_VIEW, Uri.parse("http://taylorworld.me.uk/privacy-policy.html"))
startActivity(i)
}
R.id.nav_send -> {
}
}
val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
drawerLayout.closeDrawer(GravityCompat.START)
return true
}
这是我的第二个活动
class Main2Activity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main2)
//val mystr: Int = intent.getIntExtra("data", 0)
//editText8.setText(Integer.toString(mystr))
}
解决方案
是不可行的。您必须在每个活动上制作单独的导航抽屉,这是不可行的。
相反,您可以使用片段,即使您也需要在不同的布局上保持相同的导航抽屉,即使您需要使用带有导航抽屉的片段。
推荐阅读
- c# - Blazor 的 QR 码阅读器扫描仪(webassembly 客户端)
- javascript - 删除电子邮件文本 Jquery 中的 XSS 条目
- css - 如何使用 css 设置 markdown 围栏代码块的样式?
- c - 为什么 += 在 C 中花费这么多时间,以及如何提高性能?
- sockets - TCP客户端套接字与飞镖中的公共服务器IP连接
- c++ - 如何实现拆分功能以从一行中拆分单词?
- mysql - mysqldatabase 没有反映 Postman 中的 post 请求
- fullcalendar - 如何获取在 Fullcalendar v4 中双击背景事件的日期?
- javascript - 如何在邮件中获取图片?不和谐.js
- android - 如何使用 Kotlin Android 以编程方式获取 CPU 使用率?