2017-02-12 10 views
0

私は活動から文字列を取得しようとすると、 "getIdentifierは" 正常に動作します:なぜ.getIdentifier()はクラスから数値を取得しますか?

Toast.makeText)、(これ、getResources()getIdentifier( "frase" "文字列"、getPackageName()、トースト。 LENGTH_SHORT).show();

しかし、非活動クラスからそれをしようとすると、それが数(例:2131099793)を:盗ん

のgetContext()getResources()getIdentifier( "frase"、 "文字列"、のgetContext()getPackageName。。。 。?。();あなたがthe JavaDocsで見ることができるようintがリソースの識別子であることを

これはなぜ起こるのでしょ

+1

文字列を取得する場合は、getString()を使用します。 –

答えて

1

getIdentifier()は、intを返すあなたのケースでは、それはR.string.fraseがあるのと同じintです。

最初のコードスニペットでは、そのリソース識別子をToast.makeText()に渡します。 makeText()は、intを渡すと、intが文字列リソース識別子であることを前提としているため、文字列リソースをルックアップして使用します。

2番目のコードスニペットでは、ちょうどintを使用しています。 getString()を使用して、intリソース識別子を現在の構成に対応する文字列に変換します。