V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sucvia
V2EX  ›  Kotlin

有没有人能帮我解释一下,这里面的代码.如果我创建一个新窗口,按照这个逻辑,怎么显示出来

  •  
  •   sucvia · 2022-01-12 15:27:21 +08:00 · 1937 次点击
    这是一个创建于 807 天前的主题,其中的信息可能已经有所发展或是发生改变。

    package com.example.myapplication2

    import android.os.Bundle import com.google.android.material.snackbar.Snackbar import androidx.appcompat.app.AppCompatActivity import androidx.navigation.findNavController import androidx.navigation.ui.AppBarConfiguration import androidx.navigation.ui.navigateUp import androidx.navigation.ui.setupActionBarWithNavController import android.view.Menu import android.view.MenuItem import com.example.myapplication2.databinding.ActivityMainBinding

    class MainActivity : AppCompatActivity() {

    private lateinit var appBarConfiguration: AppBarConfiguration //创建 2 个变量
    private lateinit var binding: ActivityMainBinding
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
    
        setSupportActionBar(binding.toolbar)
    
        val navController = findNavController(R.id.nav_host_fragment_content_main)
        appBarConfiguration = AppBarConfiguration(navController.graph)
        setupActionBarWithNavController(navController, appBarConfiguration)
    
        binding.fab.setOnClickListener { view ->
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                .setAction("Action", null).show()
        }
    }
    
    override fun onCreateOptionsMenu(menu: Menu): Boolean {
        // Inflate the menu; this adds items to the action bar if it is present.
        menuInflater.inflate(R.menu.menu_main, menu)
        return true
    }
    
    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        return when (item.itemId) {
            R.id.action_settings -> true
            else -> super.onOptionsItemSelected(item)
        }
    }
    
    override fun onSupportNavigateUp(): Boolean {
        val navController = findNavController(R.id.nav_host_fragment_content_main)
        return navController.navigateUp(appBarConfiguration)
                || super.onSupportNavigateUp()
    }
    

    }

    我是个萌新,刚学 Kotlin,有没有推荐群一起学习?

    按照以上代码,如果我有个按钮 id="create_button" ,按下载入 test_window.xml 窗口. test_window.xml 里面有什么讲究吗?

    3 条回复    2022-02-17 17:28:37 +08:00
    AoEiuV020CN
        1
    AoEiuV020CN  
       2022-01-12 15:34:50 +08:00
    这是安卓问题,你该学的是安卓,随便找个教程跟着走走,你所谓窗口在安卓可以是 activity fragment dialog ,可以先学到这里,再考虑这问题,
    sucvia
        2
    sucvia  
    OP
       2022-01-12 15:38:41 +08:00
    @AoEiuV020CN 好的 我去了解一下 看过很多 kotlin 的教程,基本上都是讲 kotlin 语法,没有讲交互的
    XXWHCA
        3
    XXWHCA  
       2022-02-17 17:28:37 +08:00
    你用的是 Jetpack navigation 导航,是 google 推荐的单 Activity 应用方案,如果是刚入门觉得你还是好好看官方文档 https://developer.android.google.cn/guide/navigation
    实际上 navigation 是对 Fragment 的封装,让 Fragment 更易于维护和使用。

    如果你需要导航到其他页面需要先将目标 fragment 注册到导航图,然后 navController.navigate(id)就可以了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2447 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 15:54 · PVG 23:54 · LAX 08:54 · JFK 11:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.