Android 背面未保存的警告按在片段中
我想在用户按back或退出片段时显示对话框,如果有一些数据未保存。我试图覆盖onbackpressed,但不幸的是,我得到了错误Android 背面未保存的警告按在片段中,android,android-fragments,Android,Android Fragments,我想在用户按back或退出片段时显示对话框,如果有一些数据未保存。我试图覆盖onbackpressed,但不幸的是,我得到了错误lateinit属性barcodeList尚未初始化。如何解决 以下是我的活动脚本: override fun onBackPressed() { val theFragment = supportFragmentManager.fragments for(i in 0 until theFragment.size) { if(t
lateinit属性barcodeList尚未初始化
。如何解决
以下是我的活动脚本:
override fun onBackPressed() {
val theFragment = supportFragmentManager.fragments
for(i in 0 until theFragment.size)
{
if(theFragment[i].tag == "stocker_fragment")
{
StockerFragment().onBackPressed()
}
}
}
这是一个片段:
fun onBackPressed() {
var check = false
// this barcodeList variable error.
for(i in 0 until barcodeList.size)
{
if(barcodeList[i].barcode.trim()=="")
{
check = true
break
}
}
if (check)
{
AlertHelper(context).onBackPressedAlert()
}
}
仅供参考:我已经在onCreateView上初始化了条形码列表,一切正常。onBackPressed中只有一个错误
我的最后一个问题是,如何知道用户是否在不按后退按钮的情况下退出片段?我认为问题在于活动中的
onBackPressed()
实现。使用行StockerFragment().onBackPressed()
创建StockerFragment的新实例并对其调用onBackPressed(),而不是对正在使用的实例调用它
您应该能够在Backpressed()上调整活动,如下所示:
你也可以这样做:
override fun onBackPressed() {
supportFragmentManager.fragments.forEach { fragment ->
if (fragment is StockerFragment) {
fragment.onBackPressed()
}
}
}
您可能还想找到一种方法来确定片段的onBackPressed是否决定了活动是否应该继续。然后,如果片段满意,您应该在活动中调用
super.onBackPressed()
,以便发生预期的返回行为(离开活动)。那么您的问题是什么?只需添加一个其他部分..在活动中的返回按确定吗?错误是关于变量尚未初始化。idk kotlin,但在java中,在“活动”中的逻辑应该是这样的。如果未保存,则显示对话框elsesuper.onBackPressed()
!我的第二个问题呢?我如何知道用户是否以另一种方式从片段中退出,如按menu键退出到另一个片段?最好注意片段的生命周期:
override fun onBackPressed() {
supportFragmentManager.fragments.forEach { fragment ->
if (fragment is StockerFragment) {
fragment.onBackPressed()
}
}
}