Причина, по которой drawBtn больше не работает, заключается в том, что вы снова надуваете макет при нажатии кнопки.
Что сейчас происходит:
- В исходном действии вы надули
R.layout.activity_main
и установили withdrawBtn.setOnClickListener()
после того, как этот макет был накачан.
- Вы надуваете
R.layout.popup_window
, и это фактически заменяет все из предыдущего макета новым макетом.
- Вы установили
rlayout.setOnTouchListener()
и переключили его на предыдущий макет.
Однако имейте в виду, что вы заменяете старые макеты новыми макетами ... так что все setOnClickListeners
и setOnTouchListeners
фактически исчезли. Вот почему ваш drawBtn больше не работает. Это потому, что у него больше нет onClickListener. Чтобы это исправить, вы просто должны добавить к нему onClickListener.
ОДНАКО, хотя это решение вашего вопроса, я ДОЛЖЕН указать, что ваш способ навигации по вашему приложению - ОГРОМНАЯ проблема.
НЕ ПРОДОЛЖАЙТЕ ТО, ЧТО ВЫ ДЕЛАЕТЕ.
То, как вы раздуваете макеты при нажатии кнопки, не означает, что Android предназначен для открытия новых экранов. Постоянно раздувая новый макет, вы по существу игнорируете весь предыдущий код, предназначенный для этого макета ... который может легко вызвать сбои из-за обращения к коду, который больше не существует.
В некотором смысле вы делаете свой код более запутанным, чтобы достичь результата, который дает вам неэффективные и потенциально ошибочные результаты.
Для Android на самом деле есть два часто используемых решения для перехода на новые экраны:
- Начать новое действие - Вы можете создавать несколько действий в своем приложении. Каждое действие должно раздуть ровно один макет. Если у вас есть MainActivity и PopUpWindowActivity, вы можете просто использовать
startActivity(new Intent(MainActivity.this, PopUpWindowActivity.class));
, чтобы открыть новое действие PopupWindow. Когда вы закончите с PopupWindowActivity, вы можете просто вызвать finish();
, чтобы закрыть это действие и вернуться к MainActivity. При желании вы также можете использовать startActivity()
, чтобы вернуться к MainActivity, если не хотите закрывать PopUpWindowActivity. Вот больше информации об этом: https://developer.android.com/training/basics/firstapp/starting-activity#java
- Использовать одно действие с несколькими фрагментами - Аналогично, каждое действие и фрагменты должны наполнять только один макет. Тем не менее, общая концепция вокруг фрагментов слишком много, чтобы объяснить простыми словами, поэтому читайте больше об этом здесь: https://developer.android.com/guide/components/fragments
Старайтесь не использовать setContentView()
более одного раза для каждого занятия и делайте это только в том случае, если нет другого выбора ... что я могу с уверенностью сказать со 100% уверенностью, что всегда есть лучший вариант.