我有这段代码
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);
错误就是这个
错误:没有为setMessage(int)找到合适的方法 方法ProgressDialog.setMessage(CharSequence)不适用 (实际的参数int不能通过方法调用转换转换为CharSequence) 方法AlertDialog.setMessage(CharSequence)不适用 (实际的参数int不能通过方法调用转换转换为CharSequence)
我设置的标题几乎相同并正在工作
progressBar.setTitle(R.string.ats_title_wait);
如果我把文本放在昏迷之间是有效的,但我想明白为什么这种方式不起作用
progressBar.setMessage("Service unavailable");
谢谢
答案 0 :(得分:14)
是的,因为setMessage()
的目的不是将资源字符串作为int。
您必须从资源int获取String并使用应用程序上下文的setMessage()
方法应用于getResource().getString()
。
像,
progressBar.setMessage(context.getResources().getString(R.string.ats_unavailable_service));
答案 1 :(得分:0)
如果setMessage()或任何其他此类方法给您设置xml资源文件中的文本带来麻烦,尤其是在出现Context问题的情况下,则此方法对我来说有一个进度条:
//we initialize the progress bar, get the string from xml, and pass it to setMessage
final ProgressDialog progressBar = new ProgressDialog(CheckinActivity.this);
String waitMSG = getString(R.string.please_wait);
progressBar.setMessage(waitMSG);