package com.netfluke.sergey.dialog; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; import android.content.DialogInterface; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class AuthDialog extends DialogFragment { private String name; private String pass; public String getName(){ return name; } public String getPass(){ return pass; } /* 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 AuthDialogListener { void onDialogPositiveClick(DialogFragment dialog); void onDialogNegativeClick(DialogFragment dialog); } AuthDialogListener mListener; @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); // Get the layout inflater LayoutInflater inflater = getActivity().getLayoutInflater(); // Inflate and set the layout for the dialog // Pass null as the parent view because its going in the dialog layout // "final" is important for the closure to be created in the inner class final View dialog_view = inflater.inflate(R.layout.dialog, null); builder.setView(dialog_view) // Add action buttons .setPositiveButton(R.string.signin, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { Log.d("DIALOG", "positive clicked"); // collect strings TextView tu = dialog_view.findViewById(R.id.username); name = tu.getText().toString(); TextView tp = dialog_view.findViewById(R.id.passwd); pass = tp.getText().toString(); mListener.onDialogPositiveClick(AuthDialog.this); } }) .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { // This will dismiss the dialog without the callback: // AuthDialog.this.getDialog().cancel(); Log.d("DIALOG", "negative clicked"); mListener.onDialogNegativeClick(AuthDialog.this); } }); return builder.create(); } // Override the Fragment.onAttach() method to instantiate the NoticeDialogListener @Override public void onAttach(Activity activity) { super.onAttach(activity); // Verify that the host activity implements the callback interface try { // Instantiate the NoticeDialogListener so we can send events to the host mListener = (AuthDialogListener) activity; } catch (ClassCastException e) { // The activity doesn't implement the interface, throw exception throw new ClassCastException(activity.toString() + " must implement NoticeDialogListener"); } Log.d("DIALOG", "attached"); } }