簡體   English   中英

如何使用自定義布局在AlertDialog中獲取文本字段的值

[英]How to get value of textfield in alertdialog with custom layout

這是我的對話框布局:-

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

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="date"
    android:ems="10"
    android:id="@+id/date"
    android:layout_weight="1" />

</LinearLayout>

我從擴展android.support.v4.app.Fragment的類調用對話框。 這是我的擴展DialogFragment類:

public static class MyDialogFragment extends DialogFragment {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        LayoutInflater inflater = getActivity().getLayoutInflater();
        builder.setView(inflater.inflate(R.layout.date_settings, null));



        builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                try {
                    //The problem starts
                    //How do I get the reference to the EditText 

                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        });

        return builder.create();
    }
}

我從類中調用MyDialogFragment ,如下所示:

      MyDialogFragment dial = new MyDialogFragment();
      dial.show(getActivity().getSupportFragmentManager(),"tag");

現在,如何獲取EditText的文本?

使用dialog從AlertDialog中的EditText獲取文本:

 public void onClick(DialogInterface dialog, int id) {
                try { 
                     EditText editdate = (EditText) ((Dialog)   
                                            dialog).findViewById(R.id.date);

                }catch (Exception e){
                    e.printStackTrace();
                }
            }

或者,您也可以使用展開視圖:

View view = inflater.inflate(R.layout.date_settings, null);
builder.setView(view);
....
EditText editdate = (EditText)view.findViewById(R.id.date);

首先,您需要提供EditText的ID

    <EditText
        android:id="@+id/txtDate"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="date"
        android:ems="10"
        android:id="@+id/date"
        android:layout_weight="1" />

對代碼進行一些更改,如下所示:

public static class MyDialogFragment extends DialogFragment {
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
            LayoutInflater inflater = getActivity().getLayoutInflater();
            View v = inflater.inflate(R.layout.date_settings, null);
            builder.setView(v);

            EditText txtDate = (EditText) v.findViewById(R.id.txtDate);
            txtDate.setText("Ben Lind");

            builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    try {
                        //The problem starts
                        //How do I get the reference to the EditText 

                    }catch (Exception e){
                        e.printStackTrace();
                    }
                }
            });

            return builder.create();
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM