簡體   English   中英

導航組件片段沒有回到上一個片段

[英]Navigation component fragment does not back to previous fragment

我有 2 個片段, AB ,每當片段 A 開始時,我都會檢查一個條件並將用戶發送到片段 B:

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    fetchData()
}
private fun fetchData(){
    prefs = requireActivity().getSharedPreferences(UtilConstraints.sharePrefsName, Context.MODE_PRIVATE)
    nightMode=prefs.getBoolean(UtilConstraints.sharedPrefsNightMode,false)
    fMainNightModeSwitch.isChecked=nightMode

    if(!prefs.contains(UtilConstraints.sharedPrefsMyLang)){
        findNavController().navigate(R.id.action_mainFragment_to_selectLangFragment)
    }
}

並在片段 BI 中單擊按鈕返回到前一個:

    fSelectLangSaveSettings.setOnClickListener{
        if(otherLangs.size<3){
            Snackbar.make(
                fSelectLangContainer,
                "You Must Select Your Favorite Languages",
                Snackbar.LENGTH_SHORT
            ).show()
        }else {
            prefs.edit().clear().putString(UtilConstraints.sharedPrefsMyLang, currentLang).apply()
            Snackbar.make(
                fSelectLangContainer,
                "Languages Saved Successfully",
                Snackbar.LENGTH_SHORT
            ).show()
            findNavController().navigateUp()
        }
    }

這里也是我的nav_graph

<fragment
    android:id="@+id/selectLangFragment"
    android:name="com.trinitytech.qtranslate.fragments.SelectLangFragment"
    android:label="fragment_select_lang"
    tools:layout="@layout/fragment_select_lang" >
    <action
        android:id="@+id/action_selectLangFragment_to_mainFragment"
        app:destination="@id/mainFragment"
        app:popUpToInclusive="true"
        app:popUpTo="@+id/mainFragment"/>
</fragment>
<fragment
    android:id="@+id/mainFragment"
    android:name="com.trinitytech.qtranslate.fragments.MainFragment"
    android:label="MainFragment" >
    <action
        android:id="@+id/action_mainFragment_to_selectLangFragment"
        app:destination="@id/selectLangFragment" />
</fragment>

問題是這個問題只在我嘗試自動導航到片段 B 時發生,當我使用按鈕單擊導航到 B 時它工作正常。

我還在 stackoverflow 中嘗試了其他解決方案,但沒有一個對我有用。

@ianhanniballake 我無法從第二個片段返回,這是我目前的問題。 我很確定它不是一個循環,但請讓我編輯我的問題。 ——

正如我從您的評論中得出的結論是,每當您嘗試從片段 B 返回時,您都無法返回,但實際上情況並非如此,您的片段 B 會導航回片段 A,並且每當您從onViewCreated片段 B 返回到片段 A 時被調用,然后您的fetchData()方法也被調用,您的邏輯保持不變,因此它再次導航到片段 B。您可以更改邏輯或至少在某個按鈕偵聽器中調用fetchData()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM