自定义对话框android

时间:2012-12-28 11:35:52

标签: android

我正在尝试使用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();

运行时,我得到了这个 spinner

我的问题是为什么我没有在这些选择器中获取任何数据。请帮帮我。

4 个答案:

答案 0 :(得分: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);

另一件事是确保您的数组应该在此目录中

/res/values/arrays.xml

答案 1 :(得分: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);

答案 2 :(得分: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();

答案 3 :(得分:0)

首先得到视图。

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

现在使用此view来声明您的微调器。

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

这将解决您的问题。