[英]Android (java): OnBackPress() closes my app when trying to go back from Activity to fragment
[英]OnBackPress App is crash when back From Activity to Fragment
我在我的應用程序中使用抽屜菜單。我從菜單中選擇一個選項並打開片段,然后從該片段中調用一個Activity。由於這里工作正常,但是當我按返回按鈕(OnbackPress)時應用程序崩潰了。 下面是錯誤。 “無法啟動活動... ClassCastException ...無法轉換為Home_Tab”
這是MainActivity代碼。
if (savedInstanceState == null) {
homefragment = Home_tab()
fragmentTransaction = fragmentManager!!.beginTransaction()
fragmentTransaction!!.replace(R.id.frame, homefragment)
fragmentTransaction!!.addToBackStack(null)
fragmentTransaction!!.commit()
} else {
homefragment = supportFragmentManager.fragments[0] as Home_tab //Crash at this line
}
backPress從哪里調用的代碼。
override fun onBackPressed() {
super.onBackPressed()
finish()
}
//Add a check like this before casting.
//It is a smart cast and you can directly use the result.
Fragment fragmentZero = supportFragmentManager.fragments[0]
if (fragmentZero is Home_tab) {
//Casting is done, you can directly use fragment here
homefragment = fragmentZero
}
好吧,根據您的代碼,您可以將片段添加到fragmentmanager(常規片段)中,但是嘗試從supportfragmentmanager取回它。 那是兩個不同的類,您的片段只能擴展一個
您是mixin片段管理器和支持片段管理器,我將支持一個,因為這是正確的方法。 要獲取添加了容器ID的當前顯示片段,請使用findFragmentById
if (savedInstanceState == null) {
homefragment = Home_tab()
supportFragmentManager?.let{
fragmentTransaction = it.beginTransaction()
fragmentTransaction.replace(R.id.frame, homefragment)
fragmentTransaction.addToBackStack(null)
fragmentTransaction.commit()
}
} else {
homefragment = supportFragmentManager.findFragmentById(R.id.frame) as Home_tab
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.