点击对话框1后如何显示对话框2?

时间:2019-04-22 05:21:26

标签: android

我正在Android Studio中制作我的应用程序,需要创建第一个自定义对话框,请在对话框1中按一个按钮,然后应显示对话框2。 例: 用户在活动中按下一个按钮,将显示对话框1,然后在对话框1中按下“下一步”按钮,然后出现对话框2。

我想到的最简单的方法是显示对话框1,然后在按下next按钮(在onClick方法内部)后关闭对话框1,然后显示对话框2。 我有点辛苦,因为我正在另一个Activity Fragment内的DialogFragment中执行此操作。

ImageButton NextB = view.findViewById(R.id.NextBN);
NextB.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v) {
            NewDTask();
        }
    });

public void NewDTask()
{
    final Dialog dialog = new Dialog(getContext());
    dialog.dismiss();
    NewTaskDialog NTD = new NewTaskDialog();
    NTD.show(getFragmentManager(), "New task dialog");
}

这时,唯一发生的是对话框2在按下下一个按钮后显示,但不正确,它阻塞了屏幕,对话框1仍然存在,但也被阻塞了。

2 个答案:

答案 0 :(得分:0)

您当前正在创建新的对话框1,并在您的NewDTask中将其关闭。相反,您必须从dismiss()调用NewDTask()

之后只写onClickListener
ImageButton NextB = view.findViewById(R.id.NextBN);
NextB.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v) {
            NewDTask();
            dismiss();
        }
    });

public void NewDTask()
{
  //  final Dialog dialog = new Dialog(getContext());
   // dialog.dismiss();
    NewTaskDialog NTD = new NewTaskDialog();
    NTD.show(getChildFragmentManager(), "New task dialog");
}

答案 1 :(得分:0)

 public class FirstDialog extends DialogFragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    return inflater.inflate(R.layout.dialog_first,container,false);
}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    ImageButton nextDialog = (ImageButton) view.findViewById(R.id.nextDialog);
    nextDialog.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            openNextDialog();
        }
    });
}

private void openNextDialog() {
    SecondDialog dialog = new SecondDialog();
    this.dismiss();
    dialog.show(getFragmentManager(),"second fragment");
}

}

您可以尝试这样。我从另一个片段中单击按钮打开了第一个对话框。在您的方法中,您要创建新的对话框,然后关闭已创建的对话框,而不是要关闭的对话框。