【发布时间】:2024-04-18 12:35:02
【问题描述】:
我正在构建一个非常基本的词汇应用程序。我现在正在尝试实现的功能是一个转到功能,即将用户带到一个特定的词汇术语。我通过向用户提示一个询问用户页码的对话框片段来做到这一点。 (对话框片段将通过回调触发,按钮按下) 这是我这样做的代码
public class GoToDialog extends DialogFragment{
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String pgn = pageNumber.getText().toString();
if(!isNumeric(pgn) || pgn.isEmpty()) {
Toast.makeText(getActivity(), "Please enter a valid number", Toast.LENGTH_SHORT).show();
} else {
int pagina = Integer.parseInt(pgn);
if(pagina <= 0 || pagina > total) {
Toast.makeText(getActivity(), String.format("Please enter a valid " +
"term number between 0 and %d", total), Toast.LENGTH_SHORT).show();
} else {
getDialog().dismiss();
getFragmentManager().executePendingTransactions();
communicator.onDialogMessage(pagina);
}
}
}
});
这是我运行应用程序时的屏幕截图
截图2(截图1之后)
就功能而言,对话框加载良好,能够将用户带到正确的位置。然而,在将用户从第 7 期带到第 5 期的示例中,用户被带到 正确的术语,但对话框没有像 getDialog().dismiss() 那样关闭。我知道正在调用驳回,因为我浏览了代码,并且 communicator.onDialogMessage(pagina) 将正确的术语号返回给活动。当我选择另一个学期编号时,对话框会关闭。有没有人看到这个问题?这对我来说根本没有意义。
要关闭对话框,关闭是正确的方法 - How to correctly dismiss a DialogFragment? 我还尝试了用户在Correct way to remove a DialogFragment: dismiss() or transaction.remove()? 中的建议,即调用executePendingTransactions()。
【问题讨论】:
标签: java android dialog android-dialog android-dialogfragment