Как прочитать значение из string.xml в Android? - PullRequest
348 голосов
/ 02 февраля 2010

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

String Mess = R.string.mess_1 ;

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

Ответы [ 17 ]

1 голос
/ 22 апреля 2015

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

 getText(R.string.mess_1); 

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

0 голосов
/ 18 мая 2019

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

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

0 голосов
/ 23 ноября 2018

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

0 голосов
/ 21 августа 2018

Подробнее

  • Android Studio 3.1.4
  • Kotlin версия: 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

0 голосов
/ 11 июля 2018

Обновление

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

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

0 голосов
/ 25 февраля 2014

**

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

**

String user = getResources().getString(R.string.muser); 
0 голосов
/ 16 июля 2014

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...