Câu trả lời:
Thử cái này
String mess = getResources().getString(R.string.mess_1);
CẬP NHẬT
String string = getString(R.string.hello);
Bạn có thể sử dụng getString(int)
hoặc getText(int)
để lấy một chuỗi. getText(int)
sẽ giữ lại bất kỳ kiểu văn bản phong phú nào được áp dụng cho chuỗi.
Tham khảo: https://developer.android.com/guide/topics/resource/opes-resource.html
getResouces().getInteger(R.integer.my_value_in_xml)
Trong hoạt động:
this.getString(R.string.resource_name)
Nếu không hoạt động nhưng có quyền truy cập vào ngữ cảnh:
context.getString(R.string.resource_name)
application.getString(R.string.resource_name)
this
trong khi bạn đang ở trong Hoạt động. Đơn giản là getString()
sẽ cho phép bạn làm mọi thứ.
Tôi đang sử dụng cái này:
String URL = Resources.getSystem().getString(R.string.mess_1);
Resources.getSystem()
không cung cấp cho bạn tài nguyên ứng dụng mà chỉ cung cấp cho Android. Nó không nên được sử dụng cho các tài nguyên như string
. Tôi đã sử dụng giải pháp này và ứng dụng bị sập, ném một notfoundexception
thứ khó hiểu (vì tài nguyên tồn tại strings.xml
).
Nhân tiện, cũng có thể tạo các chuỗi chuỗi trong chuỗi XML như vậy:
<string-array name="tabs_names">
<item>My Tab 1</item>
<item>My Tab 2</item>
</string-array>
Và sau đó từ Hoạt động của bạn, bạn có thể nhận được tài liệu tham khảo như vậy:
String[] tab_names = getResources().getStringArray(R.array.tab_names);
String tabname1=tab_names[0];//"My Tab 1"
Chỉ để tham khảo trong tương lai.
Trong tài liệu tài nguyên String có ghi :
Bạn có thể sử dụng getString (int) hoặc getText (int) để lấy chuỗi. getText (int) sẽ> giữ lại mọi kiểu dáng văn bản phong phú được áp dụng cho chuỗi.
Nếu bạn muốn thêm giá trị chuỗi vào một nút chẳng hạn, hãy sử dụng đơn giản
android:text="@string/NameOfTheString"
Văn bản được xác định trong chuỗi XML trông như thế này:
<string name="NameOfTheString">Test string</string>
Bạn phải tham khảo tên bối cảnh trước khi sử dụng getResources()
trong Android.
String user=getApplicationContext().getResources().getString(R.string.muser);
HOẶC LÀ
Context mcontext=getApplicationContext();
String user=mcontext.getResources().getString(R.string.muser);
Nếu bạn đang ở trong một hoạt động bạn có thể sử dụng
getResources().getString(R.string.whatever_string_youWant);
Nếu bạn không ở trong Hoạt động, hãy sử dụng:
getApplicationContext.getResource().getString(R.String.Whatever_String_you_want)
Nhận liên kết đến ngữ cảnh của ứng dụng của bạ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)
chuỗi DOM
<resources>
<!-- ....... -->
<string name="no_internet_connection">No internet connection</string>
<!-- ....... -->
</resources>
Nhận giá trị chuỗi:
val errorMessage = R.string.no_internet_connection.toLocalizedString()
trong khi u viết R
. bạn đang đề cập đến R.java
lớp được tạo bởi nhật thực, sử dụng getResources().getString()
và chuyển id
tài nguyên mà bạn đang cố đọc bên trong getString()
phương thức.
Thí dụ : String[] yourStringArray = getResources().getStringArray(R.array.Your_array);
**
Tôi hy vọng mã này có lợi
**
String user = getResources().getString(R.string.muser);
Cập nhật
getString(R.string.some_string_id)
trong cả hai Activity
hoặc Fragment
.Context.getString(R.string.some_string_id)
ở nơi bạn không có quyền truy cập trực tiếp vào getString()
phương thức. Thích Dialog
.Vấn đề là nơi bạn không có Context
quyền truy cập , như một phương thức trong Util
lớp học của bạn .
Giả sử phương pháp dưới đây không có ngữ cảnh.
public void someMethod(){
...
// can't use getResource() or getString() without Context.
}
Bây giờ bạn sẽ vượt qua Context
như một tham số trong phương thức này và sử dụnggetString().
public void someMethod(Context context){
...
context.getString(R.string.some_id);
}
Những gì tôi làm là
public void someMethod(){
...
App.getRes().getString(R.string.some_id)
}
Gì? Nó rất đơn giản để sử dụng bất cứ nơi nào trong ứng dụng của bạn!
Vì vậy, đây là một giải pháp độc đáo mà bạn có thể truy cập tài nguyên từ bất cứ đâu như thế 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;
}
}
Thêm trường tên vào manifest.xml
<application
thẻ của bạn .
<application
android:name=".App"
...
>
...
</application>
Bây giờ bạn tốt để đi.
getString (R.opes.your_opes) nhận kết quả
String myString = getResources().getString(R.string.here_your_string_name);
Bây giờ chuỗi của bạn được sao chép vào myString. Tôi hy vọng nó sẽ làm việc cho bạn.
Bạn có thể đọc trực tiếp giá trị được xác định thành chuỗi String:
<resources>
<string name="hello">Hello StackOverflow!</string>
</resources>
và thiết lập thành một biến:
String mymessage = getString(R.string.hello);
nhưng chúng ta có thể định nghĩa chuỗi vào dạng xem:
<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)
nếu bạn đã ở trongContext
(Hoạt động hoặc Dịch vụ).