Форум программистов, компьютерный форум CyberForum.ru

Как заставить setText(); выводить строку а не ее название? - Android

Войти
Регистрация
Восстановить пароль
 
Cheshire_161
0 / 0 / 0
Регистрация: 28.01.2016
Сообщений: 18
09.02.2016, 22:52     Как заставить setText(); выводить строку а не ее название? #1
Добрый вечер!
Необходимо выводить строку из strings.xml, которая будет меняться в зависимости от переменной i.
В данный момент просто выводится "q1" потом "q2" и "q3".

strings.xml :
XML
1
2
3
<string name="q1">Текст_1</string>
    <string name="q2">Текст_2</string>
    <string name="q3">Текст_3</string>
Вот кусок кода с проблемой:
Java
1
2
3
4
5
6
7
8
if (i<3){
            i++;
            result++;
            text.setText("q" + i);
        }
        else{
            intent2.putExtra("name",result);
            startActivity(intent);
Как заставить выводить именно СТРОКУ, а не ее название?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2016, 22:52     Как заставить setText(); выводить строку а не ее название?
Посмотрите здесь:

Android Как заставить работать setImageLevel в потомке ImageView
Android Как выводить текст используя ListView
Android Как выводить сообщение об отсутствии соединения с интернетом?
MyTextView.setText вызывает ошибку Android
Android Как заставить работать BroadcastReceiver?
Android Метод .setText не показывает русские символы
ViewPager setText Android
Android .setText = ошибка
Как заставить виджет выводить информацию из файла по времени? Android
Android Как заставить вращаться картинку кодом?
Android Scroll - как заставить скроллиться
Как заставить работать ViewPager + TabLayout в ScrollView? Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lumber
82 / 82 / 31
Регистрация: 02.12.2015
Сообщений: 211
09.02.2016, 23:51     Как заставить setText(); выводить строку а не ее название? #2
К строкам надо обращаться так:
R.string.q1
R.string.q2
R.string.q3
это просто константы int
Cheshire_161
0 / 0 / 0
Регистрация: 28.01.2016
Сообщений: 18
09.02.2016, 23:58  [ТС]     Как заставить setText(); выводить строку а не ее название? #3
Lumber, но как мне это сделать внутри setText() если название строки состоит наполовину из строки, наполовину из переменной int ?
Lumber
82 / 82 / 31
Регистрация: 02.12.2015
Сообщений: 211
10.02.2016, 00:33     Как заставить setText(); выводить строку а не ее название? #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Нет, у строки нет названия есть идентификатор, целое число. q1 это имя переменной (неизменяемой) в которой хранится это целое число. Получить из строки в которой содержится имя переменной значение этой переменной нельзя (*на самом деле можно через рефлексию, но не стоит так делать)

Видимо правильное решение состоит в том чтобы строки хранить в ресурсе типа массив строк.

Примерно так (код пишу без проверки).
это не strings.xml, в отдельном файле:
XML
1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="q123">
        <item>Текст_1</item>
        <item>Текст_2</item>
        <item>Текст_3</item>
    </string-array>
</resources>
Java
1
2
3
4
5
6
7
8
9
10
String[] strings = res.getStringArray(R.array.q123);
 
if (i<3){
            i++;
            result++;
            text.setText(strings[i]);
        }
        else{
            intent2.putExtra("name",result);
            startActivity(intent);

UPDATE:

Вот ещё как можно сделать: прописать идентификаторы строк в массив int.

создать поле, в него ссылку на массив:
int[] q123 = {R.string.q1, R.string.q2, R.string.q3}

потом обращаться: q123[0], q123[1], q123[2]

Java
1
text.setText(q123[i]);
Cheshire_161
0 / 0 / 0
Регистрация: 28.01.2016
Сообщений: 18
10.02.2016, 01:02  [ТС]     Как заставить setText(); выводить строку а не ее название? #5
Lumber, Спасибо, помогло
Yandex
Объявления
10.02.2016, 01:02     Как заставить setText(); выводить строку а не ее название?
Ответ Создать тему
Опции темы

Текущее время: 05:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru