Как импортировать строковый массив из ресурсов? - PullRequest
0 голосов
/ 20 декабря 2018

У меня проблема с импортом строкового массива!

Когда я пробую приведенный ниже код, Spinners остаются пустыми и не загружают значения строки массива.Это мой код, который я использую:

//Fill CoinSpinner
Spinner CoinSpinner = FindViewById<Spinner>(Resource.Id.CoinSpinner);
CoinSpinner.ItemSelected += new EventHandler<AdapterView.ItemSelectedEventArgs>(CoinSpinner_ItemSelected);
ArrayAdapter<String> CoinSpinnerAdapter = new ArrayAdapter<String>(this, Resource.Array.coin_array, Android.Resource.Layout.SimpleSpinnerItem);
//ArrayAdapter CoinSpinnerAdapter = ArrayAdapter.CreateFromResource(this, Resource.Array.coin_array, Android.Resource.Layout.SimpleSpinnerItem);
CoinSpinnerAdapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
CoinSpinner.Adapter = CoinSpinnerAdapter;

Я хочу импортировать массив строк из Resources / values ​​/ String.xml .... Что я делаю не так?

РЕДАКТИРОВАТЬ:
Это файл String.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">TestApp</string>
    <string name="coins_prompt">Coin:</string>
    <string-array name="coin_array">
        <item>EUR</item>
        <item>USD</item>
    </string-array>
</resources>

1 Ответ

0 голосов
/ 20 декабря 2018

R.array.coin_array - для чистой разработки на Android, где R - это класс ресурсов, который имеет все идентификаторы ресурсов для всех ваших ресурсов.В Xamarin.Android R становится Resource, поэтому попробуйте вместо него Resource.Array.coin_array.

РЕДАКТИРОВАНИЕ:

Пример рабочего кода для заполнения счетчика массивом строк в ресурсах:

Макет AXML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent">
   <Button android:id="@+id/myButton" 
           android:layout_width="match_parent" 
           android:layout_height="wrap_content" 
           android:text="@string/hello" />
    <TextView android:id="@+id/textView" 
              android:layout_width="match_parent" 
              android:layout_height="wrap_content"
              android:text="@string/on_off" />
    <Spinner android:id="@+id/spinner"
             android:layout_width="match_parent" 
             android:layout_height="wrap_content"
             android:prompt="@string/on_off"/>
</LinearLayout>

strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string name="hello">Hello World, Click Me!</string>
   <string name="app_name">SpinnerArray</string>
   <string name="on_off">On or Off</string>
   <string-array name="spinnerArray">
      <item>On</item>
      <item>Off</item>
   </string-array>
</resources>

Код C #:

Spinner spinner = FindViewById<Spinner>(Resource.Id.spinner);
spinner.ItemSelected += new EventHandler<AdapterView.ItemSelectedEventArgs>
        (spinner_ItemSelected);
var spinnerAdapter = ArrayAdapter.CreateFromResource
        (this, Resource.Array.spinnerArray, 
         Android.Resource.Layout.SimpleSpinnerItem);
spinnerAdapter.SetDropDownViewResource 
        (Android.Resource.Layout.SimpleSpinnerDropDownItem);
spinner.Adapter = spinnerAdapter;

Я убедился, что вышеприведенное работает для заполнения счетчика из строкового массива в ресурсах.

...