AlertDialog クラスを使用してカスタム ダイアログ (forgot_password.xml) を表示し、カスタム ダイアログ ボックスから入力を受け取りました。edittext から入力を取得するために、layoutinflator を使用しましたが、フィールドからは何も受け取りません。トースト メッセージを使用してユーザー入力を確認しました。もう 1 つ Dialog クラスは、AlertDialog と同様に、dismiss() を使用してダイアログを閉じることができます。
以下は私のforget_password.xmlファイルです
<?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"
android:background="@color/grey"
android:orientation="vertical" >
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center|center_vertical"
android:text="@string/tv_3rd_title"
android:textAppearance="?android:attr/textAppearanceLarge" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp" >
<EditText
android:id="@+id/et_3rd_username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:background="@drawable/custom_edittext"
android:ems="10"
android:hint="@string/et_2nd_hint_name"
android:paddingLeft="20dp" >
<requestFocus />
</EditText>
<ImageButton
android:id="@+id/imageButton8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|center_vertical"
android:layout_marginRight="10dp"
android:background="@null"
android:contentDescription="@string/ib_delete_text"
android:onClick="onClick"
android:src="@drawable/cancel_circle" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginTop="20dp" >
<EditText
android:id="@+id/et_3rd_emailid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:background="@drawable/custom_edittext"
android:ems="10"
android:hint="@string/et_2nd_hint_email"
android:paddingLeft="20dp" >
<requestFocus />
</EditText>
<ImageButton
android:id="@+id/imageButton9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|center_vertical"
android:layout_marginRight="10dp"
android:background="@null"
android:contentDescription="@string/ib_delete_text"
android:onClick="onClick"
android:src="@drawable/cancel_circle" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="32dp"
android:layout_marginBottom="5dp" >
<Button
android:id="@+id/btn_3rd_close"
android:layout_width="75dp"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginRight="60dp"
android:background="@drawable/button_states"
android:text="@string/btn_1st_exit" />
<Button
android:id="@+id/btn_3rd_send"
android:layout_width="75dp"
android:layout_height="wrap_content"
android:layout_marginLeft="60dp"
android:background="@drawable/button_states"
android:text="@string/btn_3rd_send" />
</FrameLayout>
</LinearLayout>
以下は、スイッチ ケース内の MainActivity の onCreateDialog() で使用される私の AlertDialog コーディングです。
protected Dialog onCreateDialog(int id, Bundle args) {
Dialog d = null;
switch(id){
case R.id.ib_1st_forgot:
AlertDialog.Builder ab = new AlertDialog.Builder(this);
//used layout inflator to fetch user input from forgot_password.xml
LinearLayout ll = (LinearLayout) getLayoutInflater().inflate(R.layout.forgot_password, null);
ab.setView(ll);
d = ab.create();
//forgot_password.xml file's buttons and edittext
Button send_link = (Button) ll.findViewById(R.id.btn_3rd_send);
Button close_dlg = (Button) ll.findViewById(R.id.btn_3rd_close);
EditText e_name = (EditText) ll.findViewById(R.id.et_3rd_username);
EditText e_email = (EditText) ll.findViewById(R.id.et_3rd_emailid);
final String names = e_name.getText().toString();
final String emails = e_email.getText().toString();
send_link.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Toast.makeText(getApplicationContext(), "username is "+names, 0).show();
}
});
close_dlg.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
//need a dialog close operation here
}
});
break;
}
return d;
}