带有导航组件的Android popper导航

问题描述 投票:0回答:1

我有两个片段FirstFragmentWelcomeFragment

FirstFragment中,我有一些动画,我从服务器加载数据,然后使用NavController导航到WelcomeFragment

navController.navigate(R.id.action_firstFragment_to_welcomeFragment);

和我的nav_graph就像这样:

<fragment
        android:id="@+id/firstFragment"
        android:name="com.flyeducation.UI.FirstFragment"
        android:label="fragment_first"
        tools:layout="@layout/fragment_first">
        <action
            android:id="@+id/action_firstFragment_to_welcomeFragment"
            app:destination="@id/welcomeFragment"
            app:enterAnim="@anim/fade_in"
            app:exitAnim="@anim/fade_out"
            app:popEnterAnim="@anim/fade_in"
            app:popExitAnim="@anim/fade_out" />
    </fragment>

我希望此行为:

从FirstFragment导航到WelcomeFragment,但在按下返回按钮时无法返回FirstFragment应用程序应该像按下主屏幕按钮一样关闭,然后返回并停留在WelcomeFragment中

从我在nav_graph XML中尝试过的文档中:

app:popUpTo="@id/firstFragment"
app:popUpToInclusive="true"

该应用程序关闭,但是当我返回它时,它确实从FirstFragment重新开始,并且没有保持我想要的状态,该状态一直停留在WelcomeFragment中

从其他问题,我也在WelcomeFragment中尝试过此方法:

navController.popBackStack(R.id.firstFragment, true);

任何人都可以帮助我实现想要的行为

编辑:

我最终截获了onKeyDown并在我的[[WelcomeFragment上按下onKeyDown时还模拟了Home单击这在我的

WelcomeFragment

中>public void myOnKeyDown(int key_code, Context context){ openDialog(context); } public void openDialog(final Context context) { new AlertDialog.Builder(context) .setTitle("Exit ! ") .setMessage("Are you sure you wanna quit our App , we will miss you !") .setNegativeButton(android.R.string.cancel, null) // dismisses by default .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent i = new Intent(Intent.ACTION_MAIN); i.addCategory(Intent.CATEGORY_HOME); context.startActivity(i); } }) .create() .show(); }
以及这在我的

Activity

@Override public boolean onKeyDown(int keyCode, KeyEvent event) { ((WelcomeFragment) WelcomeFragment).myOnKeyDown(keyCode, this); return false ; }

这给了我我想要的行为,但我认为这不是最佳实践

我有两个片段FirstFragment和WelcomeFragment,在FirstFragment中我有一些动画,我从服务器加载数据,然后使用NavController导航到WelcomeFragment:navController...。]

您绝对不应弹出图形的开始目标。按照Principles of Navigation

注意:应用程序可能具有一次性设置或一系列登录屏幕。这些conditional screens不应被视为开始目标,因为用户仅在某些情况下才看到这些屏幕。

[相反,只有在用户尚未通过该屏幕进入用户的情况下,您才应遵循first time user experience documentation将用户从WelcomeFragment重定向到FirstFragment

通过此设置,用户有99%的时间获得了更快的体验(他们只加载一个片段),依赖于NavigationUIstartDestination帮助器正常工作,而deep links也将正常工作。

android android-fragments navigation fragment android-architecture-navigation
1个回答
1
投票
您绝对不应弹出图形的开始目标。按照Principles of Navigation
© www.soinside.com 2019 - 2024. All rights reserved.