我有这个代码

    public void serviceUnavailable() {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {

            progressBar = new ProgressDialog(context);
            progressBar.setOnKeyListener(new DialogInterface.OnKeyListener() {
                @Override
                public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
                    if (keyCode == KeyEvent.KEYCODE_BACK) {
                        atsSocketManager.disconnect();
                        progressBar.dismiss();
                    }
                    return false;
                }
            });
            progressBar.setCancelable(false);
            progressBar.setTitle(R.string.ats_title_wait);
            progressBar.setMessage(R.string.ats_unavailable_service);
            progressBar.setProgressStyle(ProgressDialog.STYLE_SPINNER);
            progressBar.show();
        }
    });
}

但是如果我这样设置,我在设置消息的行上会出现错误
progressBar.setMessage(R.string.ats_unavailable_service);

错误是这样



我设置标题的位置几乎相同并且正在工作
progressBar.setTitle(R.string.ats_title_wait);

如果我在昏迷之间插入文字有效,但我想了解为什么这种方式无效
progressBar.setMessage("Service unavailable");

谢谢你

最佳答案

是的,因为setMessage()并非旨在将资源字符串获取为int。

您必须从资源int获取String并使用Application Context的setMessage()方法将其应用于getResource().getString()

喜欢,

progressBar.setMessage(context.getResources().getString(R.string.ats_unavailable_service));

10-04 20:08