Programing

android에서 string.xml에서 값을 읽는 방법은 무엇입니까?

lottogame 2020. 3. 1. 15:37
반응형

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)모두에 사용할 수 있습니다 .ActivityFragment
  • 메소드에 Context.getString(R.string.some_string_id)직접 액세스 할 수없는 곳에서 사용할 수 있습니다 getString(). 처럼 Dialog.

문제클래스 의 메소드와 같이 액세스 권한 이없는ContextUtil입니다.

컨텍스트가없는 아래 메소드를 가정하십시오.

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()하고 전달합니다 .idgetString()

예 : 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



반응형