Как показать всплывающее окно после его раздувания

#java #android #android-popupwindow

#java #Android #android-всплывающее окно

Вопрос:

У меня есть всплывающее окно, которое необходимо загрузить, как только начнется действие, которое использует параметры отображения экрана, а также другие вещи. Однако я получаю сообщение об ошибке «Невозможно добавить окно — значение нулевого токена недопустимо; выполняется ли ваша активность?» для строки welcome.showAtLocation(popupview2, Gravity.CENTER, 0, 0); .

Как я могу заставить всплывающее окно отображаться только после извлечения ресурсов? Мое всплывающее окно действует как заставка (чтобы оно могло мгновенно исчезнуть при нажатии), поэтому окно должно быть первым, что видит пользователь.

Мой код:

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

LayoutInflater inflater = (LayoutInflater) this
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    DisplayMetrics displayMetrics = getResources().getDisplayMetrics();

    dpWidth = displayMetrics.widthPixels / displayMetrics.density;

    dpHeight = displayMetrics.heightPixels / displayMetrics.density;

popupview2 = inflater.inflate(R.layout.start_layout, null);

welcome = new PopupWindow(popupview2, (int) dpWidth, (int) dpHeight);
    welcome.setAnimationStyle(R.style.Animation2);

    welcome.showAtLocation(popupview2, Gravity.CENTER, 0, 0);

}
  

В принципе, есть ли какая-нибудь «onResourcesLoaded»-подобная вещь, которую я могу использовать? Вся помощь приветствуется.

Ответ №1:

Когда ваш код вызывается, система не готова к измерению показателей

Переместите весь свой код в этот метод :

 @Override
public void onAttachedToWindow() {
    // TODO Auto-generated method stub
    super.onAttachedToWindow();

}
  

Этот метод будет вызван, когда можно будет использовать все показатели, поскольку активность полностью отображается.

Комментарии:

1. Ну, это только пошло и сработало! Спасибо, добрый программист <3