android에서 string.xml에서 값을 읽는 방법은 무엇입니까?
나는 줄을 썼다 :
String Mess = R.string.mess_1 ;
문자열 값을 얻으려면 문자열을 반환하는 대신 정수 유형의 ID를 제공합니다. 문자열 값을 어떻게 얻을 수 있습니까? string.xml
파일 에서 문자열 값을 언급했습니다 .
이 시도
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
활동 중 :
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>
getResources()
Android에서 사용하기 전에 컨텍스트 이름을 참조해야합니다 .
String user=getApplicationContext().getResources().getString(R.string.muser);
또는
Context mcontext=getApplicationContext();
String user=mcontext.getResources().getString(R.string.muser);
조각에서 사용할 수 있습니다
getActivity().getString(R.id.whatever);
이 코드를 사용할 수 있습니다 :
getText (R.string.mess_1);
기본적으로 자원 ID를 매개 변수로 getText () 메소드에 전달해야합니다.
활동중인 경우 사용할 수 있습니다
getResources().getString(R.string.whatever_string_youWant);
활동이 아닌 경우 다음을 사용하십시오.
getApplicationContext.getResource().getString(R.String.Whatever_String_you_want)
**
이 코드가 도움이 되길 바랍니다.
**
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>
이제 잘 가세요.
세부
- 안드로이드 스튜디오 3.1.4
- 코 틀린 버전 : 1.2.60
직무
- 한 줄 사용
- 최소 코드
- 컴파일러의 제안을 사용하십시오
1 단계. 신청 ()
응용 프로그램의 컨텍스트에 연결하십시오
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()
}
}
2 단계. int 확장자 추가
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
. 당신은 R.java
일식에 의해 생성 된 클래스를 참조하고 , 메소드 내부에서 읽으려고하는 리소스를 사용 getResources().getString()
하고 전달합니다 .id
getString()
예 : String[] yourStringArray = getResources().getStringArray(R.array.Your_array);
String myString = getResources().getString(R.string.here_your_string_name);
이제 문자열이 myString에 복사됩니다. 나는 그것이 당신을 위해 작동하기를 바랍니다.
참고 URL : https://stackoverflow.com/questions/2183962/how-to-read-value-from-string-xml-in-android
'Programing' 카테고리의 다른 글
프로그래밍 방식으로 선택한 스피너 항목 설정 (0) | 2020.03.01 |
---|---|
@Resource vs @Autowired (0) | 2020.03.01 |
유닉스 타임 스탬프 (epoch 이후 초)를 Ruby DateTime으로 변환하는 방법은 무엇입니까? (0) | 2020.03.01 |
모든 npm 모듈을 전체적으로 제거하는 명령? (0) | 2020.03.01 |
datetime2 데이터 유형을 datetime 데이터 유형으로 변환하면 범위를 벗어난 값 (0) | 2020.03.01 |