私はその行を書きました:
String Mess = R.string.mess_1 ;
文字列値を取得するために、文字列を返す代わりに、それは私に整数型のIDを与えています。文字列値を取得する方法string.xml
ファイルで文字列値について言及しました。
これを試して
String mess = getResources().getString(R.string.mess_1);
UPDATE
String string = getString(R.string.hello);
文字列を取得するには、getString(int)
またはgetText(int)
を使用できます。 getText(int)
は、文字列に適用されたリッチテキストスタイルを保持します。
参照: https://developer.Android.com/guide/topics/resources/string-resource.html
活動中:
this.getString(R.string.resource_name)
活動していないがコンテキストにアクセスできる場合:
context.getString(R.string.resource_name)
application.getString(R.string.resource_name)
私はこれを使っています:
String URL = Resources.getSystem().getString(R.string.mess_1);
ちなみに、strings.xmlに文字列配列を作成することも可能です。
<string-array name="tabs_names">
<item>My Tab 1</item>
<item>My Tab 2</item>
</string-array>
そしてあなたの活動からあなたはそのように参照を得ることができます:
String[] tab_names = getResources().getStringArray(R.array.tab_names);
String tabname1=tab_names[0];//"My Tab 1"
将来の参考のためにのみ。
文字列リソースのドキュメント にはこう書かれています。
文字列を取得するには、getString(int)またはgetText(int)を使用できます。 getText(int)は、文字列に適用されているリッチテキストスタイルを保持します。
解決策1
Context context;
String mess = context.getString(R.string.mess_1)
解決策2
String mess = getString(R.string.mess_1)
たとえば、ボタンに文字列値を追加したい場合は、単純に使います。
Android:text="@string/NameOfTheString"
strings.xmlで定義されているテキストは次のようになります。
<string name="NameOfTheString">Test string</string>
フラグメントでは、あなたが使用することができます
getActivity().getString(R.id.whatever);
AndroidでgetResources()
を使用する前にコンテキスト名を参照する必要があります。
String user=getApplicationContext().getResources().getString(R.string.muser);
OR
Context mcontext=getApplicationContext();
String user=mcontext.getResources().getString(R.string.muser);
このコードを使うことができます:
getText(R.string.mess_1);
基本的に、リソースIDをパラメータとしてgetText()メソッドに渡す必要があります。
活動中の場合は、を使用できます。
getResources().getString(R.string.whatever_string_youWant);
あなたが活動に参加していないなら、これを使ってください:
getApplicationContext.getResource().getString(R.String.Whatever_String_you_want)
更新
getString(R.string.some_string_id)
は、Activity
またはFragment
の両方で使用できます。Context.getString(R.string.some_string_id)
メソッドに直接アクセスできない場合は、getString()
を使用できます。 Dialog
のように。問題は、メソッドのようにContext
アクセスがないところですUtil
クラスで。
コンテキストなしで以下のメソッドを仮定します。
public void someMethod(){
...
// can't use getResource() or getString() without Context.
}
このメソッドではContext
をパラメータとして渡し、getString().
を使用します。
public void someMethod(Context context){
...
context.getString(R.string.some_id);
}
私がしていることは
public void someMethod(){
...
App.getRes().getString(R.string.some_id)
}
なに?アプリ内の任意の場所で使用するのは非常に簡単です!
だからここにあなたがUtil class
のようなどこからでもリソースにアクセスすることができるボーナスユニークな解決策があります。
import Android.app.Application;
import Android.content.res.Resources;
public class App extends Application {
private static App mInstance;
private static Resources res;
@Override
public void onCreate() {
super.onCreate();
mInstance = this;
res = getResources();
}
public static App getInstance() {
return mInstance;
}
public static Resources getResourses() {
return res;
}
}
manifest.xml
<application
タグにnameフィールドを追加してください。
<application
Android:name=".App"
...
>
...
</application>
今、あなたは行ってもいいです。
String myString = getResources().getString(R.string.here_your_string_name);
文字列がmyStringにコピーされました。私はそれがあなたのために働くことを願っています。
**
私はこのコードが有益であることを願っています
**
String user = getResources().getString(R.string.muser);
あなたのアプリケーションのコンテキストへのリンクを取得する
class MY_APPLICATION_NAME: Application() {
companion object {
private lateinit var instance: MY_APPLICATION_NAME
fun getAppContext(): Context = instance.applicationContext
}
override fun onCreate() {
instance = this
super.onCreate()
}
}
inline fun Int.toLocalizedString(): String = MY_APPLICATION_NAME.getAppContext().resources.getString(this)
strings.xml
<resources>
<!-- ....... -->
<string name="no_internet_connection">No internet connection</string>
<!-- ....... -->
</resources>
文字列値を取得します。
val errorMessage = R.string.no_internet_connection.toLocalizedString()
getString(R.string.your_string)結果を取得する
一方、R
を書きます。 Eclipseが作成したR.Java
クラスを参照しているので、getResources().getString()
を使用して、読み込もうとしているリソースのid
をgetString()
メソッド内に渡します。
例:String[] yourStringArray = getResources().getStringArray(R.array.Your_array);