回答:
これを試して
String mess = getResources().getString(R.string.mess_1);
更新
String string = getString(R.string.hello);
あなたはどちらかを使用することができますgetString(int)
またはgetText(int)
文字列を取得します。getText(int)
文字列に適用されたリッチテキストスタイルを保持します。
リファレンス:https : //developer.android.com/guide/topics/resources/string-resource.html
getResouces().getInteger(R.integer.my_value_in_xml)
活動中:
this.getString(R.string.resource_name)
活動中ではないがコンテキストにアクセスできる場合:
context.getString(R.string.resource_name)
application.getString(R.string.resource_name)
this
アクティビティにいる間は含める必要はありません。単にgetString()
あなたに物事をさせます。
私はこれを使っています:
String URL = Resources.getSystem().getString(R.string.mess_1);
Resources.getSystem()
すると、アプリケーションリソースは提供されず、androidのリソースのみが提供されます。のようなリソースには使用しないでくださいstring
。このソリューションを使用すると、アプリケーションがクラッシュし、notfoundexception
(リソースがに存在するためstrings.xml
)理解しにくいがスローされました。
ちなみに、次のように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)は、文字列に適用されているリッチテキストのスタイルを保持します。
あなたが活動しているなら、あなたは使うことができます
getResources().getString(R.string.whatever_string_youWant);
あなたが活動していない場合は、これを使用してください:
getApplicationContext.getResource().getString(R.String.Whatever_String_you_want)
アプリケーションのコンテキストへのリンクを取得する
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()
**
このコードが有益であることを願っています
**
String user = getResources().getString(R.string.muser);
更新
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
タグに名前フィールドを追加します。
<application
android:name=".App"
...
>
...
</application>
これで準備完了です。
String myString = getResources().getString(R.string.here_your_string_name);
これで文字列がmyStringにコピーされます。うまくいくと思います。
strings.xmlに定義された値を直接読み取ることができます。
<resources>
<string name="hello">Hello StackOverflow!</string>
</resources>
変数に設定します:
String mymessage = getString(R.string.hello);
文字列をビューに定義できます。
<TextView
android:id="@+id/myTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello"/>
this.getString(R.string.some_id)
すでにContext
(アクティビティまたはサービス)にいる場合は、これを簡略化できます。