在当前查看的所有其他内容上显示一个片段,然后单击按钮将其删除

时间:2018-10-05 17:20:35

标签: java android

我目前正在尝试使活动中的其他所有内容都清晰可见。然后,按一下按钮,片段应消失并显示以前的所有内容。

这是我目前的尝试:

            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction()
                    .replace(currentFragment.getId(), fragment);
            transaction.addToBackStack(null);
            transaction.commit();

然后按按钮,我做了

            getFragmentManager().popBackStack();

但是我遇到的问题是片段没有完全膨胀到其他所有视图之上,并且按下按钮并没有达到预期的效果。有什么建议吗?

编辑:它仍在显示一个bottomNavigationView,我想对此进行充气。

1 个答案:

答案 0 :(得分:1)

您可以使用Dialog片段,例如:

public class PopUpDialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    Context context = getActivity();
    AlertDialog.Builder builder = new AlertDialog.Builder(context);

    builder.setTitle("Your title")
            .setMessage("Your message")
            .setPositiveButton("Button name", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   //Do your stuff here

                   dismiss();
               }
           });
    return builder.create();
}

}

然后您从活动中调用它,例如:

PopUpDialogFragment fragment = new PopUpDialogFragment();
fragment.show(getFragmentManager(), "popUp");

如果您想要一个具有自己的自定义视图的Fragment,则可以使用onCreateView方法创建一个。

public class PopUpDialogFragment extends DialogFragment {

private Button button;

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup 
           container, Bundle savedInstanceState) {
    final View view = inflater.inflate(R.layout.your_layout, 
           container, false);
    button = view.findViewById(R.id.your_button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //Do your stuff here

            getDialog().dismiss();
        }
    });

    return view;
}

}