Android.view.WindowManager $ BadTokenException: No se puede agregar window-token null no es válido

Consigo este error siempre que intento comenzar mi clase de la ventana. Estoy usando la clase separada, y no apenas un método dentro de mi clase del juego, causa necesito deshabilitar detrás el botón en esa ventana emergente. Estoy llamando a esta clase con un botón. Este código funciona bien si lo uso dentro de mi clase de juego, pero no en una clase separada. Aquí está mi código:

public class Popup_pogresno extends Activity implements OnClickListener{ private PopupWindow pwindow; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); LayoutInflater layoutInflater = (LayoutInflater)Popup_pogresno.this .getSystemService(LAYOUT_INFLATER_SERVICE); View popupView = layoutInflater.inflate(R.layout.popup, null); pwindow = new PopupWindow(popupView, 300, 170, true); Button btnDismiss = (Button)popupView.findViewById(R.id.bPopupOK); btnDismiss.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v) { // TODO Auto-generated method stub pwindow.dismiss(); }}); pwindow.showAtLocation(popupView, Gravity.CENTER, 0, 0); } public void onClick(View v) { // TODO Auto-generated method stub } @Override public void onBackPressed() { } } 

No está llamando a setContentView(R.layout.myLayout) en su onCreate(Bundle) . Llámelo justo después de super.onCreate(savedInstanceState); .

Esto es desde la página de recursos de Actividad en el sitio de desarrolladores de Android:

Hay dos métodos que casi todas las subclases de Actividad implementarán:

OnCreate (Bundle) es donde inicializa su actividad. Lo que es más importante, aquí se suele llamar a setContentView (int) con un recurso de diseño que define su interfaz de usuario y usar findViewById (int) para recuperar los widgets de esa interfaz de usuario con los que necesita interactuar mediante programación.

OnPause () es donde se trata de que el usuario abandone su actividad. Lo que es más importante, cualquier cambio realizado por el usuario debe ser comprometido en este momento (por lo general, el ContentProvider que contiene los datos).

Editar 1:

Reemplazar:

 pwindow.showAtLocation(popupView, Gravity.CENTER, 0, 0); 

con:

 new Handler().postDelayed(new Runnable(){ public void run() { pwindow.showAtLocation(popupView, Gravity.CENTER, 0, 0); } }, 100L); 
  • Cómo obtener código fuente para android.jar
  • La forma más segura de usar SharedPreferences
  • Android: activar programaticamente WiFi hotspot
  • Convertir enum enumerado a Ennotación enumerada en android
  • Evite la actividad de la pantalla de bienvenida al presionar el botón Atrás
  • Uso de la cámara LED Flash con OpenCV en Android
  • SQLite es sin tipo?
  • Cobertura del código de prueba de Android, Eclipse
  • Problemas para mantener vivo el mensaje de Google Cloud
  • ¿Cómo convertir el formato ISO8601 en milisegundos?
  • Leer y escribir java.util.Date de la clase Parcelable
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.