我正在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仍然存在,但也被阻塞了。
答案 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");
}
}
您可以尝试这样。我从另一个片段中单击按钮打开了第一个对话框。在您的方法中,您要创建新的对话框,然后关闭已创建的对话框,而不是要关闭的对话框。