2016-09-01 4 views
1

Есть ли способ изменить R.string программно? Потому что это ошибка.Изменить ресурс getString() программно

В основном я хочу, чтобы это сделать: String parkAdd = getString(R.string.stg_ParkAddress_+id);

Потому что я жёстко строки, которые изменяются в соответствии ID.

Я пытался это сделать, но не работают:

String parkAdd = getString(R.string.stg_ParkAddress_1); 
     parkAdd = parkAdd.replace("1",id); 
     if (!parkAdd.equalsIgnoreCase("")){ 
      tvParkAddress.setText(parkAdd); 
     } 

Спасибо.

+0

Вы не можете изменять значения ресурсов программно. В принципе, вы не можете изменить его во время выполнения –

+0

@AmanGrover, но мне нужно решение, чтобы получить это, мне нужно сделать переключатель? – FilipeOS

+0

Но невозможно изменить значение ресурса во время выполнения. –

ответ

5

R.string.xxx фактически является константой, и значение не может быть добавлено, ресурс никогда не будет найден. Вы можете искать R.java, чтобы увидеть значения для вашего приложения:

public static final class string { 
    public static final int about_open_source_heading=0x7f060013; 
    public static final int about_open_source_list=0x7f060014; 
} 

Если вы жёстко строки, которые зависят от конкретного значения, может быть, вы можете сделать что-то вроде этого:

switch (id) { 
    case 12345: 
     parkAddr = R.string.stg_ParkAddress_12345; 
     break; 
    case 12346: 
     parkAddr = R.string.stg_ParkAddress_12346; 
     break; 
} 
+0

Гэри Бак, почему вы обращаетесь к «публичной статической конечной строке класса»? – FilipeOS

+0

@FilipeOS - это было просто образцом того, как выглядит файл 'R.java'. Когда вы используете константы R.string.stg_ParkAddress_X, вы ссылаетесь на финал в этом файле/классе. –

0

Просто сцепить его с id

String parkAdd = getString(R.string.stg_ParkAddress) + id; 
+0

Нет, потому что он будет извлекать мою строку, а не stg_ParkAddress_X – FilipeOS

1

Это не представляется возможным редактировать строковые ресурсы программным ли другой класс и ваши строки помещаются в этот класс и доступ во время выполнения.

2

Ресурс String не может быть изменен во время выполнения. Вы можете сохранить строку в SharedPreference, которую вы можете изменить и сохранить для дальнейшего использования.

Смежные вопросы