繁体   English   中英

仅打开底部工作表对话框一次

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM