[英]Navigation component fragment does not back to previous fragment
我有 2 個片段, A
和B
,每當片段 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.