fragment_custom_dialog.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="iterator.ir.a016.CustomDialogFragment"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingTop="20dp" android:paddingBottom="30dp"> <TextView android:id="@+id/textViewMessage" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/dialog_msg" android:gravity="center"/> <LinearLayout android:layout_below="@id/textViewMessage" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="10dp" android:gravity="center"> <Button android:id="@+id/buttonNo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/no" android:layout_marginRight="10dp" android:layout_marginEnd="10dp"/> <Button android:id="@+id/buttonYes" android:layout_marginLeft="10dp" android:layout_marginStart="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/yes"/> </LinearLayout> </RelativeLayout> </FrameLayout>
CustomDialogFragment.java
public class CustomDialogFragment extends DialogFragment { private OnCustomDialogButtonClickListener mListener; Button buttonNo; Button buttonYes; public CustomDialogFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view=inflater.inflate(R.layout.fragment_custom_dialog, null); buttonNo= (Button) view.findViewById(R.id.buttonNo); buttonYes= (Button) view.findViewById(R.id.buttonYes); buttonNo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mListener != null) { mListener.onCustomDialogClick(v); } dismiss(); } }); buttonYes.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mListener != null) { mListener.onCustomDialogClick(v); } dismiss(); } }); setCancelable(false); return view; } @Override public void onAttach(Context context) { super.onAttach(context); if (context instanceof OnCustomDialogButtonClickListener) { mListener = (OnCustomDialogButtonClickListener) context; } else { throw new RuntimeException(context.toString() + " must implement OnCustomDialogButtonClickListener"); } } @Override public void onDetach() { super.onDetach(); mListener = null; } public interface OnCustomDialogButtonClickListener { void onCustomDialogClick(View view); } }
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="iterator.ir.a016.MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:id="@+id/buttonShow" android:text="@string/show" /> </RelativeLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity implements CustomDialogFragment.OnCustomDialogButtonClickListener { Button buttonShow; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); buttonShow= (Button) findViewById(R.id.buttonShow); buttonShow.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { CustomDialogFragment customDialogFragment=new CustomDialogFragment(); customDialogFragment.show(getSupportFragmentManager(),"customDialog1"); } }); } @Override public void onCustomDialogClick(View view) { switch (view.getId()) { case R.id.buttonNo: Toast.makeText(this,"No",Toast.LENGTH_LONG).show(); break; case R.id.buttonYes: Toast.makeText(this,"Yes",Toast.LENGTH_LONG).show(); } } }
References
https://github.com/mhdr/AndroidSamples/tree/master/016