所以我需要有一个对话框,用户可以在其中选择年/月(用于信用卡)。当用户单击对话框的确定时,应该通知主机(即创建对话框的活动)有关更改。
我需要应用程序在 SDK 版本 7 上工作,因此我不能使用此处建议的 DialogFragment:http: //developer.android.com/guide/topics/ui/dialogs.html
目前这是我得到的:
public class DatePicker {
/* The activity that creates an instance of this dialog fragment must
* implement this interface in order to receive event callbacks.
* Each method passes the DialogFragment in case the host needs to query it. */
public interface DatePickerListener {
public void onDialogPositiveClick(int month, int year);
public void onDialogNegativeClick();
}
// Use this instance of the interface to deliver action events
static DatePickerListener mListener;
public static void show(Activity listner) {
mListener = (DatePickerListener)listner;
// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder((Activity)mListener);
LayoutInflater inflater = listner.getLayoutInflater();
builder.setView(inflater.inflate(R.layout.date_picker, null))
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
mListener.onDialogPositiveClick(11, 11);
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
}
);
// Create the AlertDialog object and return it
builder.create();
builder.show();
}
}
和 XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="15dp" >
<Spinner
android:id="@+id/spinnerMonth"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
<Spinner
android:id="@+id/spinnerYear"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
所以我有两个问题:第一个是我似乎无法在 onClick 对话框中获取微调器值,其次我需要以编程方式设置微调器内容,我似乎也无法弄清楚如何做到这一点(因为我不能似乎正确地获得了对话框内容)。
谁能指出我正确的方向?非常感激!