我使用 aFragment
让用户在我的 Android 应用程序中输入信息。如果已输入信息,我希望在用户按下“返回”键时向用户发送警告。如果他确认他想放弃更改,则Fragment
必须弹出。如果他取消放弃,Fragment
应该保持原样。
我已经尝试使用回调函数来实现onKeyListener
我的。但它永远不会被执行。Fragment
onKey
我能怎么做?
尝试这样的事情。(我无法测试这个)
在您的活动中,覆盖onBackPressed()
:
@Override
public void onBackPressed() {
Fragment frag = getSupportFragmentManager().findFragmentById(R.id.your_container);
if(frag instanceof TheFragmentYouAreTalkingAbout) {
((TheFragmentYouAreTalkingAbout)frag).showConfirmGoBackDialog();
} else {
super.onBackPressed();
}
}
该showConfirmGoBackDialog()
方法应该创建一个对话框。在此对话框中,您可以在确认/确定按钮上放置一个侦听器,getFragmentManager().popBackStack();
如果按下该按钮就会调用,否则什么也不做。
我宁愿不使用 instanceof 比较。
所以我的解决方案是在提交片段事务时提供一个标签。然后你可以按标签找到片段:
private void showMyFragment(){
Fragment fragment = new MyFragment();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.container, fragment, MY_FRAGMENT_TAG);
ft.commit();
}
@Override
public void onBackPressed() {
MyFragment fragment = (MyFragment)findFragmentByTag(MY_FRAGMENT_TAG);
if (fragment != null) {
fragment.showConfirmation
} else {
super.onBackPressed();
}
}