GetActivity () es nulo dentro de AlertDialog de un fragmento
¿Por qué getActivity()
devuelve null dentro de AlertDialog
?
Esta es la clase –
- Selecciona la imagen de la galería que no funciona en Fragment Class en Android
- Android.support.v4.app.FragmentManager O ¿android.app.FragmentManager?
- Los valores de EditText en Android Fragment no se actualizan
- Vista en el paginador de vistas superposición entre vistas anterior y siguiente
- ViewPager + FragmentStatePagerAdapter + cambio de orientación
Class A extends Common{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Button save = (Button) view.findViewById(R.id.save); save.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { System.out.println("the activity outside dialog.."+getActivity()); AlertDialog.Builder alert = new AlertDialog.Builder(getActivity()); alert.setPositiveButton("Check acitivity", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { dialog.cancel(); System.out.println("the activity inside dialog.."+getActivity()); } }); } }
La clase común está extendiendo el fragmento como –
import android.support.v4.app.Fragment; Class Common extends Fragment { //Some code }
Y la salida es –
the activity outside dialog..com.testapp.main.MainActivity@42131080 the activity inside dialog..null
- Ubicación de la leyenda de Achartengine
- Índice de fragmentos de resultados de actividad Fuera del rango: 0x20001
- Método de llamada en clase principal de la clase de fragmento estático
- Cómo ocultar el divisor entre las preferencias en el fragmento
- Actualizar una vista de lista en un fragmento de un receptor de difusión
- Android fragmento addToBackStack (null): ¿cómo agregar el mismo fragmento a la pila sólo una vez?
- Configuración de ViewModel para MvxFragment
- Fragmento isAdded () devuelve false en un Fragmento ya agregado
Activity activity; @Override public void onAttach(Activity activity) { super.onAttach(activity); this.activity=activity; }
I think getActivity () dentro DialogInterface está apuntando al contexto del diálogo
dialog.getActivity()
Dentro de su DialogInterface intente cambiarlo a:
A.this.getActivity();
Edit : he comprobado el getActivity () dentro de DialogInterface y debería funcionar bien.
Otra solución podría estar utilizando onAttach función de devolución de llamada y obtener su actividad Contexto allí para asegurarse de que su fragmento adjunto a la actividad de los padres antes de utilizarlo en el diálogo. Luego usarlo en lugar de getActivity ().
@Override public void onAttach(Activity activity) { super.onAttach(activity); yourActivity = activity; }
Reemplazar getActivity () a A.this
AlertDialog.Builder alert = new AlertDialog.Builder(A.this);
Why the getActivity() is returning null inside AlertDialog ?
Esto se debe a que está llamando a getActivity () de la DialogInterface.OnClickListener
no su fragmento por lo que le da nulo.
solución:
A.this.getActivity();
Usted necesita llamar a la referencia de su clase usando el this
y llamar al método getActivity()
EDITAR:
@Override public void onClick(View v) { System.out.println("the activity outside dialog.."+getActivity()); AlertDialog.Builder alert = new AlertDialog.Builder(getActivity()); alert.setPositiveButton("Check acitivity", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { System.out.println("the activity inside dialog.."+ A.this.getActivity()); dialog.cancel(); } });
getActivity()
devuelve null hasta que Fragment no se agregue a la actividad.
Usted supone para crear el objeto después de llamadas del método de onAttach.
Puede crear un objeto en el método onCreateview
para obtener las mejores prácticas.
Basándome en las respuestas de Sudhi S y Arash, creo que esta es una opción más limpia que se ocupa de la Actividad localmente al método que lo llama:
private void showDialog() { final Activity activity = getActivity(); AlertDialog.Builder builder = new AlertDialog.Builder(activity) .setTitle(R.string.my_title) .setMessage(R.string.my_message) .setNegativeButton(android.R.string.cancel, null) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Log.e(TAG, "the activity inside dialog... " + activity); } }); final AlertDialog dialog = builder.create(); dialog.setCanceledOnTouchOutside(true); dialog.show(); }
- ¿Existe alguna lib para libspotify 12 para android java?
- Com.google.gson.JsonSyntaxException: java.lang.IllegalStateException en android