Как работает всплывающее окно на Android, если это необходимо в не-классе активности? - PullRequest
2 голосов
/ 24 марта 2011

У меня проблема с созданием всплывающего окна. У меня есть игра, которую я разрабатываю, и я пытаюсь открыть окно или подменю после того, как выиграл игру, чтобы у пользователя была возможность выйти или перезапустить. Все, что я видел во всплывающих окнах, сделано в действии. Я хочу сделать это из своего класса «контроллер», в основном я хочу проверить, выиграл ли пользователь в моем классе логики, и если они действительно вывели окно, у меня есть ощущение, что мне придется это в моей деятельности. Любая помощь будет оценена. Если вам нужна дополнительная информация, просто дайте мне знать.

Ответы [ 2 ]

2 голосов
/ 24 марта 2011

Вы должны будете сделать это в Деятельности. У вас есть два варианта:

1) Когда вы знаете, что игра окончена, в вашем классе «controller» есть метод, который возвращает информацию о том, должно ли отображаться всплывающее окно. Что-то вроде isGameWon (). Позвоните по этому вопросу из вашей Активности и ответьте соответственно.

2) Сохраните ссылку на свою активность в классе контроллера или разрешите доступ к своей активности как одноэлементному объекту. Когда игра закончится, проверьте, выиграл ли игрок в вашем классе контроллеров, и если это так, вызовите функцию в вашем Activity для отображения всплывающего окна, например showGameWonPopup ().

Вы не можете отобразить всплывающее окно за пределами действия пользовательского интерфейса. Ваши два класса должны сообщить о конечном результате игры и ответить соответственно.

0 голосов
/ 04 января 2012

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

...