Yanıtlar:
Bunu dene
String mess = getResources().getString(R.string.mess_1);
GÜNCELLEME
String string = getString(R.string.hello);
Bir dize almak için getString(int)veya getText(int)öğelerinden birini kullanabilirsiniz . getText(int)dizeye uygulanan zengin metin stillerini koruyacaktır.
Referans: https://developer.android.com/guide/topics/resources/string-resource.html
getResouces().getInteger(R.integer.my_value_in_xml)
Faaliyette:
this.getString(R.string.resource_name)
Faaliyette değil ancak içeriğe erişimi varsa:
context.getString(R.string.resource_name)
application.getString(R.string.resource_name)
thisEtkinlik'deyken dahil etmeniz gerekmez . Sadece bir getString()şeyler yapmanıza izin verir.
Bunu kullanıyorum:
String URL = Resources.getSystem().getString(R.string.mess_1);
Resources.getSystem()size uygulama kaynakları vermez, sadece android's. Gibi kaynaklar için kullanılmamalıdır string. Bu çözümü kullandım ve uygulama çöktü, notfoundexceptionanlaşılması zor bir kaynak fırlattı (kaynak var olduğu için strings.xml).
Bu arada, strings.xml dosyasında dize dizileri oluşturmak da mümkündür:
<string-array name="tabs_names">
<item>My Tab 1</item>
<item>My Tab 2</item>
</string-array>
Ve sonra Faaliyetinizden referansı şu şekilde alabilirsiniz:
String[] tab_names = getResources().getStringArray(R.array.tab_names);
String tabname1=tab_names[0];//"My Tab 1"
Sadece gelecekteki referanslarımız için.
Gelen dize kaynakları belgelerine diyor:
Bir dize almak için getString (int) veya getText (int) kullanabilirsiniz. getText (int)> dizeye uygulanan zengin metin stillerini korur.
getResources()Android'de kullanmadan önce Bağlam adına başvurmanız gerekir .
String user=getApplicationContext().getResources().getString(R.string.muser);
VEYA
Context mcontext=getApplicationContext();
String user=mcontext.getResources().getString(R.string.muser);
Bir aktivitedeyseniz kullanabilirsiniz
getResources().getString(R.string.whatever_string_youWant);
Bir Faaliyette değilseniz, bunu kullanın:
getApplicationContext.getResource().getString(R.String.Whatever_String_you_want)
Uygulamanızın bağlamına bağlantı alın
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>
Dize değerini al:
val errorMessage = R.string.no_internet_connection.toLocalizedString()
sen yazarken R. R.javaeclipse tarafından oluşturulan sınıfa atıfta bulunuyorsunuz , metodun içinde okumaya çalıştığınız kaynağın kullanılmasını getResources().getString()ve aktarılmasını idsağlıyorsunuz getString().
Misal : String[] yourStringArray = getResources().getStringArray(R.array.Your_array);
**
Umarım bu kod faydalıdır
**
String user = getResources().getString(R.string.muser);
Güncelleme
getString(R.string.some_string_id)hem Activityya Fragment.Context.getString(R.string.some_string_id)doğrudan erişiminizin olmadığı yerlerde kullanabilirsiniz getString(). Gibi Dialog.Sorun , sınıfınızdaki bir yöntem gibi erişiminizin olmadığıContext yerdir Util.
Aşağıdaki yöntemi Bağlam olmadan varsayalım.
public void someMethod(){
...
// can't use getResource() or getString() without Context.
}
Şimdi Contextbu yöntemde bir parametre olarak geçeceksiniz vegetString().
public void someMethod(Context context){
...
context.getString(R.string.some_id);
}
Yaptığım şey
public void someMethod(){
...
App.getRes().getString(R.string.some_id)
}
Ne? Uygulamanızın herhangi bir yerinde kullanmak çok basit!
İşte size kaynaklara herhangi bir yerden erişebileceğiniz benzersiz bir Bonus çözümü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 <applicationEtiketinize ad alanı ekleyin .
<application
android:name=".App"
...
>
...
</application>
Şimdi gitmekte fayda var.
getString (R.string.your_string) sonucu al
String myString = getResources().getString(R.string.here_your_string_name);
Şimdi dizeniz myString'e kopyalanır. Umarım senin için çalışır.
Doğrudan strings.xml dosyasında tanımlanan değeri okuyabilirsiniz:
<resources>
<string name="hello">Hello StackOverflow!</string>
</resources>
ve bir değişkene ayarlanır:
String mymessage = getString(R.string.hello);
ancak dizeyi görünüme tanımlayabiliriz:
<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)zaten birContext(Etkinlik veya Hizmet) içindeyseniz bunu basitleştirebilirsiniz .