使用setMessage()更新对话框不起作用

时间:2018-05-21 16:18:07

标签: java android

在你将这个问题视为重复之前,请知道我看到了这些:

AlertDialog setmessage not working inside Asynctask

ProgressDialog does not want to update the message

Android: Progress Dialog change ProgressDialog.setMessage() while loading

Changing Progress Dialog Message While Running

但没有运气。

我试图在显示的ProgressDialog内更新消息。是的。就这么简单。

现在我的代码看起来像这样:

private BroadcastReceiver createMapReceiver(MapEntry entry) {
        return new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {

            ...

             dialogMessage = getString(R.string.maps_download_extracting)
                   .concat("\n\n")
                   .concat(getString(R.string.maps_download_suffix));

             Runnable changeMessage = () -> {
                    downloadingDialog.setMessage(dialogMessage);
                    downloadingDialog.show();
             };

             runOnUiThread(changeMessage);

             ...

        }
    };
}

但是消息没有更新。其他一切都按预期工作。我错过了什么?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

但我仍然不知道为什么它不起作用。

奇怪的是,我只是在接收器中调用另一个函数,这将继续这个过程。

像这样:

    private BroadcastReceiver createMapReceiver(MapEntry entry) {
        return new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                downloadingDialog.dismiss();
                unregisterReceiver(this);

                ...

                receiveDownloadedFile(new File(completeFilePath), entry);
            }
        };
    }



private void receiveDownloadedFile(File downloadedFile, MapEntry entry) {

   downloadingDialog.setMessage("TEST MESSAGE");

   ...

}