Вам нужно установить атрибут launchMode
в Activity
, который вы начинаете с singleTop
. Это приведет к тому, что входящие Intents будут доставлены в существующий экземпляр вместо запуска нового экземпляра, если этот Activity
уже находится в верхней части стека задачи.
Это делается в манифесте, добавляя android:launchMode="singleTop"
к элементу <activity>
. Чтобы получить доступ к последнему намерению (если вас интересуют любые данные, которые могли пройти с ним), переопределите onNewIntent()
в Activity
.
Вы не закрываете тег и не ждете, когда документ будет готов. Попробуйте это:
<!-- meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- bootstrap css and jQuery cdn -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js"></script>
<script>
$(document).ready(function(){
$("#btn-login").on("click", function(e) {
e.preventDefault();
alert("works");
});
});
</script>
</head>
<body>
<button id="btn-login" class="btn btn-primary" type="button">Login</button>
</body>
Попробуйте: https://torndualpublishing--parzibyte.repl.co/
Проблема здесь заключается в размещении сценария. Таким образом, HTML-страница отображается построчно сверху вниз. Итак, на данный момент ваш тег script находится в разделе head. Поэтому, когда браузер достигает этой строки и пытается привязать событие нажатия к кнопке с идентификатором «btn-login». Но на самом деле кнопка не существует в тот момент, потому что этот тег кнопки не был прочитан браузером, все еще должен быть загружен.
Если вы поместите тег script непосредственно перед тегом end body (). Это будет работать как талисман, поскольку к тому времени кнопка будет загружена, и обработчик события нажатия будет прикреплен к кнопке.