相关疑难解决方法(0)

如何在导航到Android中的另一个片段后清除导航堆栈

我正在使用Android中的新导航架构组件,我在移动到新片段后陷入清理导航堆栈.

示例:我在loginFragment中,当我导航到主片段时,我希望从堆栈中清除此片段,以便用户在按下后退按钮时不会返回到loginFragment.

我正在使用一个简单的NavHostFragment.findNavController(Fragment).navigate(R.id.homeFragment)进行导航.

现行代码:

mAuth.signInWithCredential(credential)
            .addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        NavHostFragment.findNavController(LoginFragment.this).navigate(R.id.homeFragment);
                    } else {
                        Log.w(TAG, "signInWithCredential:failure", task.getException());
                    }
                }
            });
Run Code Online (Sandbox Code Playgroud)

我尝试在navigate()中使用NavOptions,但后退按钮仍然将我发送回loginFragment

NavOptions.Builder navBuilder = new NavOptions.Builder();
NavOptions navOptions = navBuilder.setPopUpTo(R.id.homeFragment, false).build();   
             NavHostFragment.findNavController(LoginFragment.this).navigate(R.id.homeFragment, null, navOptions);
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-architecture-components android-architecture-navigation

64
推荐指数
11
解决办法
3万
查看次数

如何以编程方式更改导航图的起始目标[Jetpack]

基本上,我有以下导航图:

在此输入图像描述

我希望fragment 2在到达之后将导航图中的起点更改为正确(为了防止fragment 1在按下后退按钮时返回 - 就像启动画面一样).

这是我的代码:

navGraph = navController.getGraph();
navGraph.setStartDestination(R.id.fragment2);
navController.setGraph(navGraph);
Run Code Online (Sandbox Code Playgroud)

但是,显然它不起作用,fragment 1按下后退按钮后又回来了.

我做错了吗?还有其他解决方案吗?

android android-navigation android-jetpack android-architecture-navigation

30
推荐指数
5
解决办法
1万
查看次数

使用带有Android导航UI库的BottomNavigationView导航时,从操作栏中删除按钮

我创建了一个小应用程序,它有三个片段,可以通过BottomNavigationView进行顶级导航.如果您启动应用程序并单击底部导航栏上的导航按钮,则会在操作栏中显示一个向上按钮.以下是活动的代码:

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.main_activity)

        setSupportActionBar(toolbar)

        val navController = navHostFragment.findNavController()
        setupActionBarWithNavController(this, navController)
        setupWithNavController(bottomNav, navController)
    }

    override fun onSupportNavigateUp(): Boolean
            = findNavController(navHostFragment).navigateUp()

}
Run Code Online (Sandbox Code Playgroud)

这是结果的屏幕截图.该应用程序在主屏幕上启动,我所做的只是单击BottomNavigationView中的配置文件按钮.

在此输入图像描述

我试过听BottomNavigationView的项目选择并使用不同的NavOptions手动导航无济于事.当用户使用BottomNavigationView导航时,我们可以做些什么来避免在操作栏中显示向上按钮?

android-support-library android-navigation android-jetpack

12
推荐指数
3
解决办法
3182
查看次数