我有一个活动,每个片段中有大约10个片段,有一个带有ProgressDialog的AsyncTask,当我点击Back Button时我需要关闭所有片段 它已关闭,但ProgressDialog仍然可见,特别是当我在片段之间传输时 这是我使用的代码
@Override
public void onBackPressed() {
if(fragmentManager!=null){
for(int i = 0; i < fragmentManager.getBackStackEntryCount(); ++i) {
fragmentManager.popBackStack();
}}
}
当我调试时,我发现当我按下后退按钮时,我打开的每个片段都会进入onCreateView,尽管我使用transaction.replace
方法在片段之间进行传输。
答案 0 :(得分:5)
我正在通过以下方法清理堆栈。
// popupdialog.cpp
#include "popupdialog.h"
#include "ui_popupdialog.h"
PopupDialog::PopupDialog(QWidget *parent, QString msgTxt) :
QDialog(parent),
ui(new Ui::PopupDialog),
messageText(msgTxt)
{
ui->setupUi(this);
setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
setModal(true);
ui->message_text_display->setText(messageText);
// The message_text_display is an instance of the class,
// "PlainTextEdit". Using "QLabel" partly solves my
// problem, but does not allow text selection.
}
PopupDialog::~PopupDialog()
{
delete ui;
}
void PopupDialog::mouseReleaseEvent(QMouseEvent *e)
{
this->close();
}
清除1表示将从堆栈中删除所有片段,并且只有单个片段将保留在堆栈中。
用法 popBackStackTillEntry(1);