ShowDialog obsoleta. ¿Cuál es la alternativa?
¿Hay algo más que debería llamarse?
showDialog(TIME_DIALOG_ID);
Está en este tutorial pero dice que está obsoleto en Eclipse.
- Cómo quitar el marco rectangular del cuadro de diálogo personalizado
- Problema con el cuadro de diálogo de alerta personalizada
- Acciones de aplicación predefinidas. Enlace a mi aplicación de Contactos
- No puedo mostrar la lista en un diálogo con setMultiChoiceItems en Android
- Cómo averiguar el ancho de cuadro de diálogo personalizado y altura en tiempo de ejecución android
- Línea negra en el diálogo personalizado en Galaxy S 2
- Los cuadros de diálogo de Android 4.1.2 se llaman dos veces
- Cómo agregar el diseño de fondo en el cuadro de diálogo Modal BottomSheet?
- ¿El diálogo detiene la actividad de llamada?
- ¿Cómo evitar que ProgressDialog descarte el cambio de rotación de la pantalla en Android?
- Diálogo emergente en la pantalla principal de Android
- Descartar problema de cuadro de diálogo personalizado
- Android: Diálogo: debo ocultar o dimiss
Desde http://developer.android.com/reference/android/app/Activity.html
Public final void showDialog (int id) Añadido en el nivel 1 de la API
Este método fue obsoleto en el nivel 13. Utilice la nueva clase DialogFragment con FragmentManager en su lugar; Esto también está disponible en plataformas más antiguas a través del paquete de compatibilidad de Android.
Versión simple de showDialog (int, Bundle) que no toma argumentos. Simplemente llama a showDialog (int, Bundle) con argumentos nulos.
Por qué
- Un fragmento que muestra una ventana de diálogo, flotando en la parte superior de la ventana de su actividad. Este fragmento contiene un objeto Dialog, que se muestra como apropiado sobre la base del estado del fragmento. El control del diálogo (decidir cuándo mostrarlo, ocultarlo, despedirlo) se debe hacer a través de la API aquí, no con llamadas directas en el diálogo.
- Aquí hay una agradable discusión Android DialogFragment vs Dialog
- Otra agradable conversación ventajas DialogFragment sobre AlertDialog
¿Cómo resolver?
Más
De la Activity#showDialog(int)
:
Este método está obsoleto.
Utilice la nueva claseDialogFragment
conFragmentManager
lugar; Esto también está disponible en plataformas más antiguas a través del paquete de compatibilidad de Android.
Para mostrar el cuadro de diálogo, puede utilizar el código siguiente. Esto es para mostrar un cuadro de AlertDialog simple con varias casillas de verificación:
AlertDialog.Builder alertDialog= new AlertDialog.Builder(MainActivity.this); . alertDialog.setTitle("this is a dialog box "); alertDialog.setPositiveButton("ok", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Toast.makeText(getBaseContext(),"ok ive wrote this 'ok' here" ,Toast.LENGTH_SHORT).show(); } }); alertDialog.setNegativeButton("cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Toast.makeText(getBaseContext(), "cancel ' comment same as ok'", Toast.LENGTH_SHORT).show(); } }); alertDialog.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { // TODO Auto-generated method stub Toast.makeText(getBaseContext(), items[which] +(isChecked?"clicked'again i've wrrten this click'":"unchecked"),Toast.LENGTH_SHORT).show(); } }); alertDialog.show();
Título
Mientras que si está utilizando la función showDialog para mostrar un cuadro de diálogo diferente o cualquier cosa según los argumentos pasados, puede crear una función propia y puede llamarla bajo la función onClickListener()
. Algo como:
public CharSequence[] items={"google","Apple","Kaye"}; public boolean[] checkedItems=new boolean[items.length]; Button bt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt=(Button) findViewById(R.id.bt); bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub display(0); } }); }
Y agregue el código del cuadro de diálogo dado arriba en la definición de la función.
Este código funcionó para mí. Fijar fácil pero probablemente no una manera preferida.
public void onClick (View v) { createdDialog(0).show(); // Instead of showDialog(0); } protected Dialog createdDialog(int id) { // Your code }
package com.keshav.datePicker_With_Hide_Future_Past_Date; import android.app.DatePickerDialog; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.DatePicker; import android.widget.EditText; import java.util.Calendar; public class MainActivity extends AppCompatActivity { EditText ed_date; int year; int month; int day; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ed_date=(EditText) findViewById(R.id.et_date); ed_date.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Calendar mcurrentDate=Calendar.getInstance(); year=mcurrentDate.get(Calendar.YEAR); month=mcurrentDate.get(Calendar.MONTH); day=mcurrentDate.get(Calendar.DAY_OF_MONTH); final DatePickerDialog mDatePicker =new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday) { ed_date.setText(new StringBuilder().append(year).append("-").append(month+1).append("-").append(day)); int month_k=selectedmonth+1; } },year, month, day); mDatePicker.setTitle("Please select date"); // TODO Hide Future Date Here mDatePicker.getDatePicker().setMaxDate(System.currentTimeMillis()); // TODO Hide Past Date Here // mDatePicker.getDatePicker().setMinDate(System.currentTimeMillis()); mDatePicker.show(); } }); } } // Its Working
- RecyclerView y java.lang.IndexOutOfBoundsException: Inconsistencia detectada. Posicionador de visor no válido PositionViewHolder en dispositivos Samsung
- ¿Puede Android hacer redes ad-hoc peer-to-peer?