0

2 つのスピナーと 2 つのボタンを備えたカスタム ダイアログ ボックスを作成しようとしています。私は次のコーディングを行っています

これは、ダイアログ ボックス内のカスタム GUI の xml です。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="SORT BY" />

<Spinner
    android:id="@+id/spinner1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" 
    android:prompt="@string/prompt1"
    android:entries="@array/ordersortby"
    android:layout_gravity="center"/>

<TextView
    android:id="@+id/textView2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="ORDER"
    />

<Spinner
    android:id="@+id/spinner2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
     android:prompt="@string/address"
     android:entries="@array/ordersortby1"


    />


<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="OK" />

<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Cancel"
     />

文字列で私は次のように宣言しています

 <string name="prompt1">Order Number</string>

 <string-array name="ordersortby">
    <item>Order Number</item>
    <item>Date Submitted</item>
    <item>Date Entered</item>
</string-array>
<string-array name="ordersortby1">
    <item>ASC</item>
    <item>DESC</item>
</string-array>

そして活動中、私は次のことをしています

final Dialog dialog = new Dialog(orders.this);
            dialog.setContentView(R.layout.orderpicker);
            dialog.setTitle("Sort By Dialog");
            dialog.show();

これを実行すると、この スピナーが得られます

私の問題は、これらのピッカー内でデータを取得できない理由です。私を助けてください。

4

4 に答える 4

0

以下のコードを使用してみましょう。

 spinner_ordersortby = (Spinner)findViewById(R.id.spinner_ordersortby);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
            this, R.array.ordersortby, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner_language.setAdapter(adapter);

もう1つのことは、配列がこのディレクトリ内にあることを確認することです

/res/values/arrays.xml
于 2012-12-28T11:46:35.977 に答える
0

まずビューを取得します。

LayoutInflater inflater = LayoutInflater.from(this);
View view = inflater.inflate(R.layout.yourlayout, null); 

これを使用viewして、スピナーを宣言します。

Spinner spinner = (Spinner) view.findViewById(R.id.spinner);

これで問題が解決します。

于 2012-12-28T11:58:51.343 に答える
0

以下のコードを使用dialog.show();して、文字列配列を string.xml ファイルに定義すると、問題が解決します。

Spinner mSpinner1 = (Spinner)dialog.findViewById(R.id.spinner_ordersortby);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
            this, R.string.ordersortby, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mSpinner1.setAdapter(adapter);
于 2012-12-28T11:50:40.380 に答える
0

あなたのコードでこのようなことを試してください

LayoutInflater factory = LayoutInflater.from(this);
View myview = factory.inflate(R.layout.orderpicker, null); 
Dialog dialog = new Dialog(orders.this);
        dialog.setContentView(myview);
        dialog.setTitle("Sort By Dialog");
        dialog.show();
于 2012-12-28T11:52:54.200 に答える