我有一个单一的活动和多个片段样式的应用程序使用导航组件。 我正在使用Koin进行DI。我想根据干净架构的假设在我的应用程序中创建一个Navigator类。 这个假想的类看起来像: class Navigator(private val navHostFragment: NavHostFragment)
{
fun toStudentsProfile():Unit
{
val action = HomeFragmentDirections.toStudentsProfile()
navHostFragment.findNavController
我正在将Android的导航架构组件集成到我的应用程序中。在将数据从活动传递到片段的开头时,我遇到了一些问题,因此我遵循以下答案:Navigation Architecture Component- Passing argument data to the startDestination。 这种逻辑在我看来似乎是合理的,但我正在努力确定如何真正获得NavHostFragment。埃利奥特·施罗克用了这句话- val navHostFragment = navFragment as NavHostFragment 但是我还没有找到可以工作的Java等价物。我尝试使用getSupportFra
我想以编程方式检索嵌套图来更改startDestination。 这一条适用于navHost val navHostFragment = appNavFragment as NavHostFragment
val inflater = navHostFragment.navController.navInflater
val graph = inflater.inflate(R.navigation.nav_app)
graph.startDestination = if(sth) startDestination1 else startDestination2
val navContro
第一次活动
class MainActivity : AppCompatActivity() {
private lateinit var navHostFragment: NavHostFragment
private lateinit var appBarConfiguration: AppBarConfiguration
private lateinit var navController: NavController
private lateinit var binding: ActivityMainBinding
override fun o
我使用Jetpack导航在片段和活动之间导航。所以,我有一个MainActivity,布局中有一个FragmentContainerView。我可以轻松地从片段导航到片段/活动。但是,我无法找到如何使用navController从一个活动导航到另一个活动/片段的方法。
例如,从片段FA,我将navController.navigate()调用为活动A。现在,我想从活动A导航到活动B或片段FB。
我已经试过了
val host = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
在一个带有BottomNavigationView和导航组件的Jetpack Compose应用程序中,我对activity中的底部栏进行了通常的设置:
val navHostFragment =
supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController
navigationView.setupWithNavController(navController)
在每个屏幕中,
我提出这个问题是因为我没有在Java中找到任何好的例子。下面的导航栏有5个片段:主页、最爱、上传、收件箱和用户。每次切换片段时,都会再次创建片段,这正是我所不需要的。这不仅是为了替换碎片,因为家庭和喜爱是相互依赖的:如果你在市场上标记一个产品为最受欢迎的,它必须以相同的方式出现在市场上。
这里的导航活动
public class NavigationActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCre
我想知道科特林语中的“懒惰”与“懒惰”有什么区别?
val host by lazy { ... }
val host = lazy { ... }
在我的android代码中
val host by lazy {
supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
}
已成功
但这段代码
val host = lazy {
supportFragmentManager.findFragmentById(R.id.nav_host_fragm
我有一个Activity,NavHostFragment嵌套在Fragment中
根View of Activity
Fragment
NavHostFragment
当我在NavGraph中导航时,正在为NavHostFragment创建一个后台堆栈。但是,当我单击设备的“后退”按钮时,应用程序就会关闭(就好像没有后台堆栈一样),而不是转到前一个Fragment。
我是不是遗漏了什么?NavHostFragment和Fragment之间是否存在需要进行的耦合?
我试图在我的navHostFragment文件中设置一个MainActivity.kt,但是下面的代码会导致错误:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.lunchtray/com.example.lunchtray.MainActivity}: java.lang.NullPointerException: null cannot be cast to non-null type androidx.navigation.fragment.NavHostFragment
cl
我们看到了只针对Android 9的低端坠机事件。
Caused by java.lang.IllegalStateException: View androidx.fragment.app.FragmentContainerView{4376b50 V.E...... ......ID 0,0-720,1008 #7f08010e app:id/fragment_top_container} does not have a NavController set
at androidx.navigation.Navigation.findNavController(Navigati
我有一个活动,包含一个带有给定导航图的NavHostFragment (以及典型的子片段)。我的子片段可能触发事件(通过接口声明),因此它们有一个方法setXXXlistener(接口)来注册实现接口的侦听器。
这就是实现接口的活动(因为它知道如何处理事件)。
为此,我期望在显示子片段时调用Activity.onAttachFragment方法,以便执行以下操作:
public void onAttachFragment(@NonNull Fragment fragment)
{
super.onAttachFragment(fragment);
if( fragment in