gpt4 book ai didi

android - Kotlin-MainActivity的调用 fragment 方法

转载 作者:行者123 更新时间:2023-12-02 13:41:12 25 4
gpt4 key购买 nike

我有两个片段和一个带菜单的工具栏。我希望能够通过调用执行此操作的片段中的方法来选择菜单项时切换片段。问题是,当我尝试使用以下代码运行应用程序时,出现此错误。 java.lang.IllegalStateException: Fragment FirstFragment{5ce330b (f5c2d362-d3fb-4346-9971-dd7be653e609)} not associated with a fragment manager.MainActivity.kt

class MainActivity : AppCompatActivity() {

lateinit var adapter: Adapter

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(findViewById(R.id.toolbar))
}


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 {
// 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 -> {
FirstFragment().settings()
true
}

else -> super.onOptionsItemSelected(item)

}
}
}
FirstFragment.kt
fun settings() {
findNavController().navigate(R.id.action_FirstFragment_to_SecondFragment)
}
如何实现片段管理器,以便可以通过MenuItem调用此方法而不会发生异常?提前致谢!

最佳答案

谢谢您的帮助!我通过在第一个片段中创建MenuItem来解决此问题,如下所示:

lateinit var second: MenuItem

override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
second = menu.add("second fragment")

second.setOnMenuItemClickListener() {
settings()
true
}
}

fun settings() {
findNavController().navigate(R.id.action_FirstFragment_to_SecondFragment)
}

关于android - Kotlin-MainActivity的调用 fragment 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63332307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com