3

Java コード内にスピナーを配置して、アプリケーションを作成しました。私は今、strings.xml ファイルからスピナーを設定するように変換しようとしています。いくつかの Web サイト (例 1例 2 ) をフォローしましたが、コードを機能させることができませんでした。

それらの主な問題は、使用する ArrayAdapter のタイプが<CharSequence>. <String>ArrayAdaptersを使用してこれを行うことはできますか?

これは、私の XML ファイルの配列です。

<string-array name="anti_pump_ap_mode_array">
    <item>OFF</item>
    <item>Anti-Pump</item>
    <item>Motor Cut...</item>
</string-array>

これが私が試したコードです:

apModeAdapter = new ArrayAdapter<String>(this, R.array.anti_pump_ap_mode_array, android.R.layout.simple_spinner_item );

apModeAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, R.array.anti_pump_ap_mode_array );

apModeAdapter = ArrayAdapter.createFromResource(this, android.R.layout.simple_spinner_item, R.array.anti_pump_ap_mode_array );

もちろん、最後の 1 つではエラーが発生しますが、最初の 2 つではスピナーに値が入力されません。アプリケーションを実行すると、スピナーは空です。

4

2 に答える 2

19

以下の方法を使用して、配列 ID とレイアウト ID を交換します。Textarray リソース ID は 2 番目のパラメーターです

apModeAdapter = ArrayAdapter.createFromResource(this, R.array.anti_pump_ap_mode_array, android.R.layout.simple_spinner_item,  );

編集:最初の作業方法について。リソースから文字列配列を取得する

Resources res = getResources();
apModeAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, res.getStringArray(R.array.anti_pump_ap_mode_array) );
于 2012-08-24T12:55:32.593 に答える
2

CharSequenceString実装するインターフェイスであるため、APIcreateFromResource()がインターフェイスの型を返しても、それにはまだString配列が入力されています。後で本当に結果に String としてアクセスする必要がある場合は、アクセサーをキャストできます。ただし、ほとんどの Android UI メソッドはCharSequence入力としても受け取ります。

さらに、パラメータが逆になります。次のようになります。

ArrayAdapter.createFromResource(this, R.array.anti_pump_ap_mode_array, android.R.layout.simple_spinner_item );
于 2012-08-24T12:56:52.653 に答える