Android - извлечение массива строк из ресурсов
Ниже приведен код, который я сделал для извлечения элемента массива строк:
String[] menuArray;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ScrollView sv = new ScrollView(this);
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
sv.addView(ll);
// Create an ArrayAdapter that will contain all list items
ArrayAdapter<String> adapter;
menuArray = getResources().getStringArray(R.array.menu);
for(int i = 0; i < menuArray.length; i++)
{
Button b = new Button(this);
b.setText(menuArray[i]);
ll.addView(b);
}
this.setContentView(sv);
}
Это файл strings.xml:
<string-array name="menu">
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
Однако R.array.menu, у которого эта проблема компилируется:
Начиная с ADT 14, поля ресурсов не могут использоваться в качестве корпусов коммутаторов.
Вызовите это исправление, чтобы получить дополнительную информацию.
Ответы
Ответ 1
for(int i = 0;i<menuArray.length; i++)
{
Button b = new Button(this);
b.setText(menuArray[i]);
ll.addView(b);
}
Удалить следующую инструкцию
try {
x = count();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
и попробуйте указать высоту и ширину макета для всех макетов.
Ответ 2
Как получить массив строк из ресурсов:
array.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="my_string_array">
<item>one</item>
<item>two</item>
<item>three</item>
</string-array>
</resources>
код
String[] stringArray = getResources().getStringArray(R.array.my_string_array);
(У ОП уже был ответ на свой вопрос, но на основании названия вопроса другие люди могут приехать сюда, ища этот ответ.)