如何在对话框1中单击后显示对话框2?

问题描述 投票:0回答:2

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

我能想到的最简单的事情就是显示对话框1,然后按下下一个按钮(在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");
}

此时,唯一发生的事情是Dialog 2在按下下一个按钮后显示,但不正确,它会阻止屏幕,对话框1仍然存在,但也被阻止。

android
2个回答
0
投票

您正在创建新的Dialog 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");
}

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");
}

}

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

© www.soinside.com 2019 - 2024. All rights reserved.