0

所以我需要有一个对话框,用户可以在其中选择年/月(用于信用卡)。当用户单击对话框的确定​​时,应该通知主机(即创建对话框的活动)有关更改。

我需要应用程序在 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 对话框中获取微调器值,其次我需要以编程方式设置微调器内容,我似乎也无法弄清楚如何做到这一点(因为我不能似乎正确地获得了对话框内容)。

谁能指出我正确的方向?非常感激!

4

1 回答 1

0

首先,我在手机、计算机或任何地方看到的每一个信用卡实现都在一个窗口中包含所有元素。您确定要将用户最可能期望的体验更改为涉及弹出对话框的体验吗?

如果活动本身具有所有必要的输入,对您和他们来说不是更简单:信用卡号的文本字段,日期和月份的两个微调器,以及 CVS 文本字段 - 好像它不会即使在小屏幕手机上,空间也会不足。

不管你是否对你的想法死心塌地,答案都是一样的,就像这样:

class something {
  int mMonth;
  int mDay;
  (...)
monthSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
  @Override
  public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
    mMonth = pos;   
  }
  @Override
  public void onNothingSelected(AdapterView<?> parent) { }
});
于 2012-10-16T16:09:39.660 回答