Comments (6)
出现了一样的报错,需求是在启动一个activity时 动态判断 设置 setStartDestination(),如果在oncreate就报上面的错,如果是onstart()就同过,个人理解是初始化未完成就开始清理栈。问题是之前的项目没有出现。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// val binding = ActivityMainBinding.inflate(layoutInflater)
// setContentView(binding.root)
setContentView(R.layout.activity_main)
initNavGraph()
}
override fun onStart() {
super.onStart()
initNavGraph()
}
private fun initNavGraph() {
val navHostFragment =
supportFragmentManager.findFragmentById(R.id.nav_host_main) as NavHostFragment
navHostFragment.navController
val navController = navHostFragment.navController
val navMainGraph = navController.navInflater.inflate(R.navigation.nav_main)
//TODO 数据不应该直接出现在UI,这个模式数据应该放在 ShareViewModel 中 区局多次使用
//判断是否已经选择了指定对讲模式,如果没有选择就显示选择对讲模式页,如果已经存在,直接进入对应的对讲主页
val selectcallModeInt = AppConfigs.selectCallModeKVI.get()
val startDestinationId = if (selectcallModeInt == -1) {
R.id.selectModeFragment
} else {
// R.id.homeFragment
R.id.selectModeFragment
}
navMainGraph.setStartDestination(startDestinationId)
navController.graph = navMainGraph
}
from smooth-navigation.
出现了一样的报错,需求是在启动一个activity时 动态判断 设置 setStartDestination(),如果在oncreate就报上面的错,如果是onstart()就同过,个人理解是初始化未完成就开始清理栈。问题是之前的项目没有出现。
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // val binding = ActivityMainBinding.inflate(layoutInflater) // setContentView(binding.root) setContentView(R.layout.activity_main) initNavGraph() }
override fun onStart() { super.onStart() initNavGraph() } private fun initNavGraph() { val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_main) as NavHostFragment navHostFragment.navController val navController = navHostFragment.navController val navMainGraph = navController.navInflater.inflate(R.navigation.nav_main) //TODO 数据不应该直接出现在UI,这个模式数据应该放在 ShareViewModel 中 区局多次使用 //判断是否已经选择了指定对讲模式,如果没有选择就显示选择对讲模式页,如果已经存在,直接进入对应的对讲主页 val selectcallModeInt = AppConfigs.selectCallModeKVI.get() val startDestinationId = if (selectcallModeInt == -1) { R.id.selectModeFragment } else {
// R.id.homeFragment R.id.selectModeFragment } navMainGraph.setStartDestination(startDestinationId) navController.graph = navMainGraph
}
兄弟 你需要换种写法来获取NavController
from smooth-navigation.
出现了一样的报错,需求是在启动一个activity时 动态判断 设置 setStartDestination(),如果在oncreate就报上面的错,如果是onstart()就同过,个人理解是初始化未完成就开始清理栈。问题是之前的项目没有出现。
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // val binding = ActivityMainBinding.inflate(layoutInflater) // setContentView(binding.root) setContentView(R.layout.activity_main) initNavGraph() }override fun onStart() { super.onStart() initNavGraph() } private fun initNavGraph() { val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_main) as NavHostFragment navHostFragment.navController val navController = navHostFragment.navController val navMainGraph = navController.navInflater.inflate(R.navigation.nav_main) //TODO 数据不应该直接出现在UI,这个模式数据应该放在 ShareViewModel 中 区局多次使用 //判断是否已经选择了指定对讲模式,如果没有选择就显示选择对讲模式页,如果已经存在,直接进入对应的对讲主页 val selectcallModeInt = AppConfigs.selectCallModeKVI.get() val startDestinationId = if (selectcallModeInt == -1) { R.id.selectModeFragment } else {
// R.id.homeFragment R.id.selectModeFragment } navMainGraph.setStartDestination(startDestinationId) navController.graph = navMainGraph
}
兄弟 你需要换种写法来获取NavController
具体怎么写?麻烦了
from smooth-navigation.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
lifecycleScope.launch {
//如果不加延迟就报错,加了就正常了
//java.lang.UnsupportedOperationException
// at java.util.AbstractList.remove(AbstractList.java:161)
// at androidx.navigation.fragment.FragmentNavigator.popBackStack(FragmentNavigator.java:109)
// delay(2)
initNavGraph()
}
}
private fun initNavGraph() {
val navHostFragment =
supportFragmentManager.findFragmentById(R.id.nav_host_main) as NavHostFragment
val navController = navHostFragment.navController
val navMainGraph = navController.navInflater.inflate(R.navigation.nav_main)
navMainGraph.setStartDestination(R.id.homeFragment)
navController.graph = navMainGraph
}
}
延迟 1微秒就不报错了
from smooth-navigation.
换了Navigation.findNavController 也是一样,延迟1毫秒就不报错,不延迟就报错,不知道有正解不?麻烦了
private fun initNavGraph2() {
val navController = Navigation.findNavController(this, R.id.nav_host_main)
val navMainGraph = navController.navInflater.inflate(R.navigation.nav_main)
navMainGraph.setStartDestination(R.id.homeFragment)
navController.graph = navMainGraph
}
from smooth-navigation.
给你翻了下代码
val navHostFragment = supportFragmentManager
.findFragmentById(R.id.nav_host_fragment_bankcard) as NavHostFragment
val navController = NavHostFragment.findNavController(navHostFragment)
val bankCardCount = intent?.getIntExtra("bankCardCount",0)
navController.setGraph(
if(bankCardCount == 0) R.navigation.nav_bankcard_add
else R.navigation.nav_bankcard,
// 没有银行卡时,添加银行卡界面直接退出
if(bankCardCount == 0) Bundle().apply { putBoolean("isReturnList",false) }
else null
)
<?xml version="1.0" encoding="utf-8"?>
<androidx.fragment.app.FragmentContainerView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/nav_host_fragment_bankcard"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
/>
from smooth-navigation.
Related Issues (19)
- 你好, 请问 『 GitHub 上开源的 "Navigation Add Hide 修改版" 』具体是指哪个repo HOT 3
- launchSingleTop属性跳转页面问题 HOT 3
- Duplicate class androidx.navigation.fragment.DialogFragmentNavigator found in modules HOT 1
- 连续快速点击item跳转闪退 HOT 1
- 代码设置NavGraph,二级页面返回后白屏 HOT 1
- Navigation 2.4+ Kotlin 重写版本 HOT 1
- demo点击右下角的设置,页面跳转的时候左上角能看到前一个页面的内容,一闪而过。 HOT 1
- navigation args跨模块传参数的坑能解决吗? HOT 1
- navArgs()方法不能用 HOT 2
- DiffUtilCallbacks的方法能写成静态方法吗 HOT 1
- launchSingleTop模式跳转页面时,若启动页面时附带了新的arguments,如何处理arguments变更逻辑? HOT 5
- action跳转,双击崩溃 HOT 1
- 生命周期问题 HOT 1
- 结合BottomNavigationView使用有异常 HOT 2
- 页面跳转之后的生命周期问题 HOT 2
- 【 提问须知 】 HOT 1
- java.lang.IllegalArgumentException: Navigation action HOT 2
- fragment 转场时一闪而过上一页的内容 HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from smooth-navigation.