Cómo usar DialogFragment en Android | Autor Hüseyin Özkoç | Septiembre de 2021
¡Hola, queridos desarrolladores de Android y querido Fox! Hoy mostraré un ejemplo de cómo usar subclases de fragmentos especiales para crear diálogos. Clase DialogFragment!
Primero, debe crear el diseño del diálogo en el archivo de recursos.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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"><androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="300dp"
android:layout_height="300dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:background="@color/colorAccent"
>
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:text="Title"
android:textSize="40dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/no"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="42dp"
android:layout_marginRight="42dp"
android:layout_marginBottom="65dp"
android:text="No"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<Button
android:id="@+id/yes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginLeft="24dp"
android:layout_marginBottom="65dp"
android:text="Yes"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:layout_width="wrap_content"
android:id="@+id/message"
android:layout_height="wrap_content"
android:text="Hüseyin Özkoç"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
</TextView>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
Entonces, debes crear una clase Java. Después de eso, debes extender tu clase a la clase DialogFragment. Después de todo, debe usar la devolución de llamada OnCreateView para obtener la vista de diálogo. Por último, puede utilizar el contexto de diálogo.
public class DialogFragment extends android.app.DialogFragment {
private Context mContext;
private Button no, yes;
private TextView title, message;@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View view = inflater.inflate(R.layout.dialog_fragment, container, false);
no = view.findViewById(R.id.no);
yes = view.findViewById(R.id.yes);
title = view.findViewById(R.id.title);
message = view.findViewById(R.id.message);
yes.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
yes.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
Log.e("yes", "Clicked Yes");
);
);
no.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
Log.e("no", "Clicked No");
);
return view;
}
}
Ahora puede mostrar su diálogo en la actividad principal.
public class MainActivity extends AppCompatActivity private Button myButton;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myButton = findViewById(R.id.button);
myButton.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
DialogFragment dialogFragment = new DialogFragment();
dialogFragment.show(getFragmentManager(), "MyFragment");
);
¡con! ¡Dios mio!
Además, DUna generaciónLa clase alogFragment tiene métodos de ciclo de vida de fragmentos estándar, pero hay algunas devoluciones de llamada adicionales. Aquí puedes ver:
onCreateDialog()
-Anula esta devolución de llamada para proporcionarDialog
Se utiliza para la gestión y visualización de clips.
onDismiss()
-Si necesita anular esta devolución de llamada al ejecutar cualquier lógica personalizadaDialog
Descartado, como liberar recursos, cancelar la suscripción a recursos observables, etc.
onCancel()
-Si necesita anular esta devolución de llamada al ejecutar cualquier lógica personalizadaDialog
Cancelar.
DialogFragment
También contiene métodos para desactivar o configurar la cancelaciónDialogFragment
:
dismiss()
-Cerrar el fragmento y su diálogo. Si se agrega un fragmento a la pila de actividades, se mostrarán todos los estados de la pila hasta esta entrada inclusive. De lo contrario, se confirmará una nueva transacción para eliminar el fragmento.
setCancellable()
-Controlar si mostrarDialog
Puede cancelarse.Este método debe usarse en lugar de llamar directamenteDialog.setCancelable(boolean)
.
¡Espero que este sea un artículo útil para ti! ¡mantenerse sano!
Mi fuente:
https://developer.android.com/reference/android/app/DialogFragment#Lifecycle
https://developer.android.com/guide/fragments/dialogs