Los DialogFragment son la evolución en ICS de los antiguos diálogos, con un diseño más cuidado y que Google define como un Fragment que muestra una pantalla de diálogo. Este sabe gestionar su ciclo de vida para poder mostrarlo, ocultarlo o reciclarlo. Aquí tenéis más información sobre la implementación en ICS que es prácticamente lo mismo por basarse en esto.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:padding="4dip"
android:gravity="center_horizontal"
android:layout_width="match_parent" android:layout_height="match_parent">
<TextView
android:id="@+id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical|center_horizontal"
android:textAppearance="?android:attr/textAppearanceMedium"
android:gravity="top|center_horizontal"
android:layout_margin="10dip"
/>
<Button android:id="@+id/continuar"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_weight="0"
style="@style/Button"
android:text="Aceptar">
<requestFocus />
</Button>
</LinearLayout>
public static class DialogFragmentManager extends SherlockDialogFragment{
String mMessage = "";
boolean mShowButton = true;
static DialogFragmentManager newInstance(String Message, boolean showButton){
DialogFragmentManager f = new DialogFragmentManager();
Bundle args = new Bundle();
args.putString("message", Message);
args.putBoolean("showbutton", showButton);
f.setArguments(args);
return f;
}
@Override
public void onCreate(Bundle savedIntanceState){
super.onCreate(savedIntanceState);
mMessage = getArguments().getString("message");
mShowButton = getArguments().getBoolean("showbutton");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedIntanceState){
View v = inflater.inflate(R.layout.dialog, container, false);
View tv = v.findViewById(R.id.message);
((TextView) tv).setText(mMessage);
Button button = (Button) v.findViewById(R.id.continuar);
if(!mShowButton){
button.setVisibility(View.GONE);
}
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
((NombreDeMiActivity) getActivity()).closeMessage();
DialogFragmentManager.this.dismiss();
DialogFragmentManager.this.onDestroy();
DialogFragmentManager.this.onDestroyView();
}
});
return v;
}
}
protected void showMessage(String message, boolean showButton){
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Fragment prev = getSupportFragmentManager().findFragmentByTag("dialog");
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);
DialogFragment newFragment = DialogFragmentManager.newInstance(message, showButton);
newFragment.show(ft, "dialog");
}
protected void closeMessage(){
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Fragment prev = getSupportFragmentManager().findFragmentByTag("dialog");
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);
}
Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. ACEPTAR