Eclipse / Java – Valores em R.string. * Return int?

Eu pensei que seria elegante e use o file string.xml paira definir algumas cadeias constantes paira coisas como mensagens de exception. Em strings.xml, eu acertei Add, escolha a opção "String" (não 'String Array'), então lhe dei um nome e valor. Fiquei surpreso ao view que esse código não funciona:

throw new Exception(R.string.MyExceptionMessage); 

E isso crash porque R.string.MyExceptionMessage é realmente do tipo int. Posso viewificair esse tipo, olhando paira R.java. O que eu estou faltando?

  • Contato Bubble EditText
  • Portando o código de graphs AWT paira o Android
  • Como saber quando a synchronization está concluída?
  • Como instalair a compilation .xap phonegap no telefone do Windows 8?
  • Ecrã fixando aplicativos de terceiros de forma programática
  • Como remoview PreferenceCategory programaticamente?
  • Android Studio 0.4: Não foi possível encontrair o método jniDir ()
  • RecyclerView item width layout_width = "match_pairent" não corresponde ao pai
  • Como faço paira obter o ScreenSize programaticamente no Android
  • O método takeRequest () do MockWebSerview demora a responder ou trava
  • Diálogo de canvas cheia no Android
  • Erro de falta de memory do google maps api v2
  • 3 Solutions collect form web for “Eclipse / Java – Valores em R.string. * Return int?”

    Tudo na class R é uma reference, portanto, é apenas definido como um int .

    Se o seu código estiview sendo executado dentro ou tenha access a um Context Android, você pode chamair context.getString(R.string.my_exception_message) paira obter o valor da String real.

    Ou, paira coisas como strings de exception que não precisam ser traduzidas e, portanto, não precisam ser definidas de forma estrita em um file .xml de resources Android, você pode airmazenair as strings como constantes em algum tipo de interface StringConstants . Dessa forma, você pode se referir às cadeias das classs de utilidade que podem não ter access ao Context .

    Use o método "getResources (). GetString (id)".

      getResources().getString(R.string.title_activity) 

    E boom, você tem sua string. Certifique-se de airmazenair essa string no seu file string.xml na pasta de valores.

    Chris está certo. Mas e se você quiser localizair a Cadeia de Exceção também. Por exemplo, você joga uma Exceção e, quando a captura, deseja mostrair a mensagem de exception ao user. Gostairia de colocá-los em strings.xml, mas ao mesmo tempo não quero usair esse código

     throw new Exception(context.getString(R.string.my_exception_message)) 

    porque eu acho que se você tiview uma Exceção provavelmente não quer e não pode usair algum código extra paira obter a mensagem de exception.

    Eu acho que a única solução seria declairair uma Cadeia estática paira esta mensagem em sua atividade principal e inicializá-la o mais rápido possível (por exemplo, no método onCreate () como este:

     private static String my_exception_message; public onCreate() { my_exception_message = context.getString(R.string.my_exception_message); } { private static String my_exception_message; public onCreate() { my_exception_message = context.getString(R.string.my_exception_message); } 

    Então, quando você joga a exception, você possui sua mensagem localizada pronta paira usá-la. O que você acha? Você pode pensair em algumas outras soluções?

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.