Android DialogFragment Example
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.z_dialog_fragment.MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Open Dialog" android:onClick="openDialog" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> </android.support.constraint.ConstraintLayout>
MainActivity.java
import android.support.v4.app.FragmentManager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Toast; public class MainActivity extends AppCompatActivity implements PopupModelFragment.DialogListener{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void openDialog(View v) { FragmentManager fm = getSupportFragmentManager(); PopupModelFragment popupModelFragment = PopupModelFragment.newInstance("Hello!", "How are you!"); popupModelFragment.show(fm, "popup_model_fragment"); popupModelFragment.setDialogListener(this); } @Override public void onConfirm() { Toast.makeText(this, "Message Read!", Toast.LENGTH_SHORT).show(); } }
fragment_popup_dialog.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:orientation="vertical"> <TextView android:id="@+id/tv_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" android:textStyle="bold" android:padding="5dp" android:text="Hello"/> <TextView android:id="@+id/tv_message" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" android:padding="5dp" android:text="Hello World!"/> <TextView android:id="@+id/tv_confirm" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:padding="10dp" android:textColor="#4ddf0f" android:text="Ok"/> </LinearLayout> </RelativeLayout>
PopupModelFragment.java
import android.app.Dialog; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.DialogFragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.widget.TextView; public class PopupModelFragment extends DialogFragment { public static final String TITLE = "dialog_title"; public static final String MESSAGE = "dialog_message"; private DialogListener dialogListener; private TextView tvTitle, tvMessage, tvConfirm; public PopupModelFragment() { } public static PopupModelFragment newInstance(String title, String message) { PopupModelFragment frag = new PopupModelFragment(); Bundle args = new Bundle(); args.putString(TITLE, title); args.putString(MESSAGE, message); frag.setArguments(args); return frag; } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_popup_dialog, container); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); tvTitle = (TextView) view.findViewById(R.id.tv_title); tvMessage = (TextView) view.findViewById(R.id.tv_message); tvConfirm = (TextView) view.findViewById(R.id.tv_confirm); String title = getArguments().getString(TITLE, ""); String message = getArguments().getString(MESSAGE, ""); if (title.isEmpty()) { tvTitle.setVisibility(View.GONE); } else { tvTitle.setText(title); } if (message.isEmpty()) { dismiss(); return; } tvMessage.setText(message); tvConfirm.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dismiss(); if (dialogListener != null) { dialogListener.onConfirm(); } } }); } @Override public void onStart() { super.onStart(); } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { Dialog dialog = super.onCreateDialog(savedInstanceState); dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); return dialog; } public void setDialogListener(DialogListener listener) { this.dialogListener = listener; } public interface DialogListener { void onConfirm(); } }
Search within Codexpedia
Custom Search
Search the entire web
Custom Search
Related Posts