[英]Open bottom sheet dialog only for one time
我的底部工作表对话框有问题。 如何让我的底部工作表对话框只打开一次? 如果我从活动中单击该按钮两次,它将打开两次对话框。 如何从活动中检查对话框是否打开? 如果对话框是打开的,如果我单击按钮,它将关闭。 这是我从活动中打开片段的代码。 谢谢
Bundle bundle = new Bundle();
bundle.putString("outletData", new Gson().toJson(outletData));
BookOutletDialogFragment bookOutletDialogFragment = BookOutletDialogFragment.newInstance();
bookOutletDialogFragment.setArguments(bundle);
bookOutletDialogFragment.show(getSupportFragmentManager(), bookOutletDialogFragment.TAG);
将您的活动中的标志设置为:-
public static boolean isFragmentShown=false;
将片段的 onPause() 和 onStart() 方法修改为:-
@Override
public void onStart() {
super.onStart();
Log.e( "Fragment is visible", "Fragment is visible");
**YouActivityName**.isFragmentShown = true;
}
@Override
public void onPause() {
super.onPause();
Log.e("Fragment is not visible", "Fragment is not visible");
**YouActivityName**.isFragmentShown = false;
}
并在您的点击方法中将此代码添加到您的顶部以检查片段是否可见:-
if(!isFragmentShown){
Bundle bundle = new Bundle();
bundle.putString("outletData", new Gson().toJson(outletData));
BookOutletDialogFragment bookOutletDialogFragment = BookOutletDialogFragment.newInstance();
bookOutletDialogFragment.setArguments(bundle);
bookOutletDialogFragment.show(getSupportFragmentManager(),
bookOutletDialogFragment.TAG);}
虽然Afzal Khan 的回答在我的情况下是正确的,但在底部工作表对话框中执行某些操作(例如:按下按钮)后从未调用过 onPause() 方法。 所以我只是覆盖了 onDismiss() 方法,因为我观察到每次关闭对话框时都会调用 onDismiss() 方法,这与 onPause() 不同
@Override
public void onDismiss(DialogInterface dialog) {
System.out.println("onDismiss() method called");
**YouActivityName**.isFragmentShown = false;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.