Как читать значение из string.xml в android?

Я написал строку:

String Mess = R.string.mess_1 ;

чтобы получить строковое значение, но вместо того, чтобы возвращать строку, он дает мне идентификатор типа integer. Как я могу получить его строковое значение? Я упомянул строковое значение в файле string.xml.

Ответ 1

Попробуйте это

String mess = getResources().getString(R.string.mess_1);

UPDATE

String string = getString(R.string.hello);

Вы можете использовать getString(int) или getText(int) для извлечения строки. getText(int) сохранит любой богатый стиль текста, применяемый к строке.

Ссылка: https://developer.android.com/guide/topics/resources/string-resource.html

Ответ 2

В действии:

this.getString(R.string.resource_name)

Если нет в активности, но имеет доступ к контексту:

context.getString(R.string.resource_name)
application.getString(R.string.resource_name)

Ответ 3

Я использую это:

String URL = Resources.getSystem().getString(R.string.mess_1);

Ответ 4

Кстати, также возможно создать строковые массивы в файле 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"

Ответ 5

Только для будущих ссылок.

В документации String resources говорится:

Вы можете использовать getString (int) или getText (int) для извлечения строки. getText (int) будет > сохранять какой-либо богатый стиль текста, применяемый к строке.

Ответ 6

Решение 1

Context context;
String mess = context.getString(R.string.mess_1)

Решение 2

String mess = getString(R.string.mess_1)

Ответ 7

Если вы хотите добавить строковое значение к кнопке, например, просто используйте

android:text="@string/NameOfTheString"

Определенный текст в файле strings.xml выглядит следующим образом:

 <string name="NameOfTheString">Test string</string>

Ответ 8

Прежде чем использовать getResources() в Android, вы должны указать имя контекста.

String user=getApplicationContext().getResources().getString(R.string.muser);

ИЛИ

Context mcontext=getApplicationContext();

String user=mcontext.getResources().getString(R.string.muser);

Ответ 9

В фрагментах вы можете использовать

getActivity().getString(R.id.whatever);

Ответ 10

Вы можете использовать этот код:

 getText(R.string.mess_1); 

В принципе, вам нужно передать идентификатор ресурса в качестве параметра методу getText().

Ответ 11

Если вы в деятельности, вы можете использовать

getResources().getString(R.string.whatever_string_youWant);

Если вы не в Деятельности, используйте это:

getApplicationContext.getResource().getString(R.String.Whatever_String_you_want)

Ответ 12

**

Я надеюсь, что этот код полезен

**

String user = getResources().getString(R.string.muser); 

Ответ 13

пока ты пишешь R вы ссылаетесь на класс R.java созданный eclipse, используете getResources().getString() и передаете id ресурса, из которого вы пытаетесь читать, внутри метода getString().

Пример: String[] yourStringArray = getResources().getStringArray(R.array.Your_array);

Ответ 14

Обновить

  • Вы можете использовать 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)
}

Какие? Это очень просто использовать в любом месте вашего приложения!

Итак, вот уникальное решение Bonus, с помощью которого вы можете получить доступ к ресурсам из любого места, например 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.

<application
        android:name=".App"
        ...
        >
        ...
    </application>

Теперь тебе пора.

Ответ 15

подробности

  • Android Studio 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()

Результаты

enter image description here enter image description here

Ответ 16

getString (R.string.your_string) получить результат

Ответ 17

String myString = getResources().getString(R.string.here_your_string_name);

Теперь ваша строка копируется в myString. Я надеюсь, что это будет работать для вас.