close android memory dialog alert dismiss

android - close - ¿Cómo descartar AlertDialog.Builder?



android close alertdialog onclick (9)

En el siguiente código a continuación, ¿cómo descarto el cuadro de alerta? No quiero causar una pérdida de memoria. Intenté el .dismiss () en alertDialog, pero eso no funcionó ... Gracias

// User pressed the stop button public void StopMsg_button_action(View view){ final EditText password_input = new EditText(this); // create an text input field password_input.setHint("Enter Password"); // put a hint in it password_input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); // change it to password type AlertDialog.Builder alertDialog = new Builder(this); // create an alert box alertDialog.setTitle("Enter Password"); // set the title alertDialog.setView(password_input); // insert the password text field in the alert box alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() { // define the ''OK'' button public void onClick(DialogInterface dialog, int which) { String entered_password = password_input.getText().toString(); if (entered_password.equals(my_password)) { locManager.removeUpdates(locListener); // stop listening for GPS coordinates startActivity(new Intent(Emergency_1Activity.this,Main_MenuActivity.class)); // go to main menu } else { alert("Incorrect Password"); } } }); alertDialog.setNeutralButton("Cancel", new DialogInterface.OnClickListener() { // define the ''Cancel'' button public void onClick(DialogInterface dialog, int which) { } }); alertDialog.show(); // show the alert box }


¡Intenté esto y trabajé!

.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { alertDialog.setCancelable(true); } });


Con el siguiente código, puede mostrar un ListBox AlertDialog y cuando presiona sobre un elemento, cierra el Diálogo. El orden del código es importante.

AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext); String names[] ={"A","B","C","D"}; ArrayAdapter<String> adapter = new ArrayAdapter<String>(mContext,android.R.layout.simple_list_item_1,names); LayoutInflater inflater = getLayoutInflater(); View convertView = (View)inflater.inflate(R.layout.list_layout, null); ListView lv = (ListView) convertView.findViewById(R.id.listView1); lv.setAdapter(adapter); alertDialog.setView(convertView); alertDialog.setTitle("List"); final AlertDialog ad = alertDialog.show(); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //Toast.makeText(mContext, position, Toast.LENGTH_LONG).show(); ad.dismiss(); } });


Debe usarlo de esta manera si no desea colocar botones y tener un diseño personalizado en el que tenga una vista textual, y desea cerrar el cuadro de diálogo de alerta al hacer clic en esa vista de texto:

AlertDialog alertDialog = builder.show();

Entonces revisa

if(alertDialog != null && alertDialog.isShowing()){ alertDialog.dismiss(); }

Esto también es cierto si desea descartarlo en otro lugar de su actividad después de verificar alguna condición.


El código es muy simple:

final AlertDialog show = alertDialog.show();

finalmente en la acción de botón por ejemplo:

show.dismiss();

Por ejemplo, con un diálogo de alerta personalizado:

Código en java, puede crear un Object AlertDialog:

public class ViewAlertRating { Context context; public ViewAlertRating(Context context) { this.context = context; } public void showAlert(){ AlertDialog.Builder alertDialog = new AlertDialog.Builder(context); LayoutInflater inflater = ((Activity) context).getLayoutInflater(); View alertView = inflater.inflate(R.layout.layout_test, null); alertDialog.setView(alertView); final AlertDialog show = alertDialog.show(); Button alertButton = (Button) alertView.findViewById(R.id.btn_test); alertButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { show.dismiss(); } }); } }

Código XML layout_test.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Valoración" android:id="@+id/text_test1" android:textSize="20sp" android:textColor="#ffffffff" android:layout_centerHorizontal="true" android:gravity="center_horizontal" android:textStyle="bold" android:paddingTop="10dp" android:paddingBottom="10dp" android:background="#ff37dabb" android:paddingLeft="20dp" android:paddingRight="20dp" /> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingLeft="20dp" android:paddingRight="20dp" android:layout_marginTop="15dp"> <EditText android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/edit_test" android:hint="Descripción" android:textColor="#aa000000" android:paddingLeft="10dp" android:paddingRight="10dp" android:textColorHint="#aa72777a" android:gravity="top" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:paddingTop="10dp" android:paddingLeft="15dp" android:paddingRight="15dp" android:paddingBottom="15dp" > <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" android:weightSum="1.00" android:gravity="right" > <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Enviar" android:id="@+id/btn_test" android:gravity="center_vertical|center_horizontal" android:textColor="#ffffffff" android:background="@drawable/btn_flat_blue_selector" /> </LinearLayout> </LinearLayout> </LinearLayout> </LinearLayout>

finalmente, llamar a Actividad:

ViewAlertRating alertRating = new ViewAlertRating(this); alertRating.showAlert();


En lugar de alertDialog.setNeutralButton solo usa alertDialog.setNegativeButton . Use dialog.cancel() , porque dialog.dismiss() no es un método disponible para los cuadros de diálogo de Alerta.


Este método demuestra el código que se necesita ... de la respuesta anterior de Namrata

@SuppressLint("InflateParams") private static void showDialog(Activity activity, int layoutId) { LayoutInflater inflater = activity.getLayoutInflater(); View dialoglayout = inflater.inflate(layoutId, null); AlertDialog.Builder builder = new AlertDialog.Builder(activity); builder.setView(dialoglayout); CustomDialog.doCustomLogic(activity, layoutId, dialoglayout); final AlertDialog alertDialog = builder.show(); // caller assumes there will be a btn_close element present Button closeNowBtn = (Button) dialoglayout.findViewById(R.id.btn_close); closeNowBtn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { alertDialog.dismiss(); } }); }


Lo que no funcionó sobre despedir ()?

Debería poder usar Dialog.dismiss() o Dialog.cancel()

alertDialog.setNeutralButton("Cancel", new DialogInterface.OnClickListener() { // define the ''Cancel'' button public void onClick(DialogInterface dialog, int which) { //Either of the following two lines should work. dialog.cancel(); //dialog.dismiss(); } });


Para descartar o cancelar AlertDialog.Builder

dialog.setNegativeButton("إلغاء", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { dialogInterface.dismiss() } });

Tienes que llamar a dismiss() en la interfaz de diálogo.


Simplemente anule crear método y guarde la instancia de diálogo. Entonces puedes llamar despedir

@Override public AlertDialog create() { this.dialog = super.create(); return this.dialog; }

En algún lugar en el código:

dialog.dismiss();