Java 听一听",;“后退”;按入碎片的键
我使用Java 听一听",;“后退”;按入碎片的键,java,android,Java,Android,我使用片段让用户在我的Android应用程序中输入信息。如果输入了信息,我希望在用户按下“后退”键时向用户发送警告。如果他确认要放弃更改,则必须弹出片段。如果他取消放弃,片段应保持原样 我已经尝试使用onKey回调函数将onkeylister实现到我的Fragment。但它从未被执行过 我该怎么办?试试这样的东西。(我还没能测试这个) 在您的活动中,覆盖onBackPressed(): @覆盖 public void onBackPressed(){ Fragment frag=getSuppo
片段
让用户在我的Android应用程序中输入信息。如果输入了信息,我希望在用户按下“后退”键时向用户发送警告。如果他确认要放弃更改,则必须弹出片段。如果他取消放弃,片段应保持原样
我已经尝试使用onKey
回调函数将onkeylister
实现到我的Fragment
。但它从未被执行过
我该怎么办?试试这样的东西。(我还没能测试这个)
在您的活动中,覆盖onBackPressed()
:
@覆盖
public void onBackPressed(){
Fragment frag=getSupportFragmentManager().findFragmentById(R.id.your_容器);
如果(您所谈论的片段的片段实例){
((您正在谈论的片段)frag.showConfirmGoBackDialog();
}否则{
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();
}
}
您还可以将此代码放入片段中,因为该片段具有相同的覆盖,然后您就知道您位于正确的片段中。