2015-03-03 5 views
3

у меня есть этот кодAndroid ProgressDialog setMessage из строковых ресурсов

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); 

Ошибка это

error: no suitable method found for setMessage(int) method ProgressDialog.setMessage(CharSequence) is not applicable (actual argument int cannot be converted to CharSequence by method invocation conversion) method AlertDialog.setMessage(CharSequence) is not applicable (actual argument int cannot be converted to CharSequence by method invocation conversion)

где я дал название почти то же самое, и работает

progressBar.setTitle(R.string.ats_title_wait); 

Если я кладу текст между коматозным работает, но я хочу, чтобы понять, почему этот способ не работает

progressBar.setMessage("Service unavailable"); 

спасибо

+3

у вас есть 'context'. '.setMessage (context.getResources(). getString (R.string.ats_unavailable_service));' – Blackbelt

+0

@Blackbelt спасибо, что сработало отлично. – agusgambina

+0

приветствуются – Blackbelt

ответ

10

Да, потому что setMessage() не предназначена, чтобы получить строка ресурса как int.

Вы должны получить String из ресурса int и применить к setMessage() с использованием метода контекста приложения getResource().getString().

Мол,

progressBar.setMessage(context.getResource().getString(R.string.ats_unavailable_service)); 
Смежные вопросы