返回上一个在 android 中有一个对话框的活动

Posted

技术标签:

【中文标题】返回上一个在 android 中有一个对话框的活动【英文标题】:Back to previous activity having a dialog box in android 【发布时间】:2016-06-14 20:18:36 【问题描述】:

我有一个带有 2 个屏幕的 android 应用程序。我在从第一个屏幕转到第二个屏幕时设置了一个对话框。我的代码是:

@Override
        protected void onPreExecute() 
            super.onPreExecute();
            pDialog = new ProgressDialog(MainActivity.this);
            pDialog.setTitle("Please wait");
            pDialog.setMessage("Authenticating User");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.setCanceledOnTouchOutside(false);
            pDialog.show();

            Intent it = new Intent(MainActivity.this, SecondActivity.class);
            it.putExtra("invoiceid", invc);
            it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
            startActivity(it);
            //finish();

        

运行代码时,单击后退按钮会显示对话框并转到第一个屏幕。 现在我想直接在点击后退按钮时显示第一个屏幕而不显示对话框。怎么可能?

如果有文本框,如何清除第一个屏幕?

【问题讨论】:

在 startActivity(it) 之前尝试 pDialog.dismiss(); 关闭您在 onPostExecute 中的对话,然后开始您的活动。不要从 onPreExecute 开始。 您是否为第二个活动指定了分层父级? @Rakshit Nawani :谢谢......它工作正常。我还有一个问题.....如果有蚂蚁文本框,如何清除第一个屏幕? 【参考方案1】:

startActivity(it);之前尝试pDialog.dismiss() 如果要在第一个 Activity 中清除任何 TextBox 中的任何数据,则在移动任何 Activity 之前将文本设置为该 EditText "" ,它将清除 EditText 处的数据。

【讨论】:

【参考方案2】:

public void dismiss ()

在 API 级别 1 中添加。关闭对话框,将其从屏幕上移除。 可以从任何线程安全地调用此方法。请注意,您 当对话框打开时,不应覆盖此方法进行清理 被解雇了。

        pDialog.dismiss();
        Intent it = new Intent(MainActivity.this, SecondActivity.class);
        it.putExtra("invoiceid", invc);
        it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
        startActivity(it);

【讨论】:

【参考方案3】:

尝试使用

        Intent it = new Intent(MainActivity.this, SecondActivity.class);
        it.putExtra("invoiceid", invc);
        it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
        pDialog.dismiss();
        startActivity(it);

【讨论】:

'Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK' 你为什么需要它?【参考方案4】:

试试这个

 pDialog.dismiss() before startActivity(it)

【讨论】:

【参考方案5】:

您必须先关闭dialogBox,然后才能将其转移到其他活动。 在 onPostExecute 中添加您的意图

pDialog.dismiss();

然后调用你的意图

Intent it = new Intent(MainActivity.this, SecondActivity.class);
            it.putExtra("invoiceid", invc);
            it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
            startActivity(it);

【讨论】:

以上是关于返回上一个在 android 中有一个对话框的活动的主要内容,如果未能解决你的问题,请参考以下文章

如何在家庭活动android上显示进度对话框?

Android活动堆栈和对话框

如何在android中将图像从一个活动发送到另一个活动?

对话框android中的datepickerdialog

对话框弹出并返回活动

Android:返回上一个活动