Intereting Posts
Как настроить SDK для Android для разработки командной строки в Linux? Должен ли телефон быть подключен к Интернету, чтобы поставщик сети мог определить местоположение? Использование layout_gravity = "bottom" для размещения внизу LinearLayout Как отключить Android-устройство? Android: идентификатор приложения Facebook показывает ошибку в значениях-ta / strings.xml и не может создать подписанный apk Поддерживает ли Android KitKat устройства, поддерживающие Bluetooth LE, в качестве периферийного устройства? Как изменить цвет мягкой клавиатуры «Enter» / «Next» на леденец Как создать массив массивов с данными курсора в Android VideoView превращается в черный экран Как лучше всего добавить систему комментариев / рейтинга в приложение для Android Можно ли записывать телефонные звонки через Android-приложение? Анализ локального XML-файла с использованием Sax в Android Ошибка интеграции Google Analytics Android Анимированное население RecyclerView Единичное тестирование с использованием Firebase

Переопределение поведения Android Backbutton работает только на первой странице с помощью PhoneGap

Я использую PhoneGap 1.5.0, jQuery 1.7.1 и jQuery mobile 1.0.1 и пытаюсь переопределить подставку в Android, как указано здесь или здесь .

document.addEventListener("deviceready", onDeviceReady, false); // PhoneGap loaded function onDeviceReady() { console.log("PhoneGap Ready!"); // waiting for button document.addEventListener("backbutton", handleBackButton, false); } // handle the back button function handleBackButton() { console.log("Back Button Pressed!"); navigator.app.exitApp(); } 

Но он работает только на первой странице моего приложения. Перейдя на другую страницу, откидная панель ничего не делает. Приложение состоит из табуляции:

 <body> <div data-role="page" id="pilotTab"> <div data-role="header"> <h1>Pilot</h1> </div> <div data-role="content" id="pilotContent"> content be here ;) </div> <div data-role="footer" data-position="fixed"> <div data-role="navbar"> <ul> <li><a href="pilotTab.html" data-transition="none">Lotse</a> </li> <li><a href="bookingTab.html" data-transition="none">Verkehr</a> </li> <li><a href="mainListTab.html" data-transition="none">B&ouml;rt</a> </li> </ul> </div> <!-- /navbar --> </div> <!-- /footer --> </div> 

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

Solutions Collecting From Web of "Переопределение поведения Android Backbutton работает только на первой странице с помощью PhoneGap"

Я прошел через новый исходный код Phonegap и выполнил следующие изменения, чтобы сделать работу с подставкой.

Код теста Html

 <script type="text/javascript"> $("#home").click(function(){ $.mobile.changePage("home.html"); }); document.addEventListener("deviceready", onDeviceReady, false); document.addEventListener("backbutton", handleBackButton, false); function onDeviceReady() { console.log("PhoneGap Ready!"); } function handleBackButton() { console.log("Back Button Pressed!"); navigator.app.exitApp(); } </script> 

Поместите следующий код в блок else document.addEventListener в cordova-1.5.0.js после строки-no 507

 if (e === 'backbutton') { var exec = require('cordova/exec') exec(null, null, "App", "overrideBackbutton", [true]); } 

Поместите следующий код в метод cordova определения cordova-1.5.0.js в cordova-1.5.0.js после строки-нет 592

 if(type == "backbutton"){ var e = document.createEvent('Events'); e.initEvent(type); if (data) { for (var i in data) { e[i] = data[i]; } } document.dispatchEvent(e); return; } 

Я поместил весь cordova-1.5.0.js в этот gist с обновленным кодом https://gist.github.com/2020325

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

редактировать

Поместите следующий код в метод cordova определения cordova-1.5.0.js в cordova-1.5.0.js после строки-нет 592

 if(type == "backbutton" || type == "menubutton" || type == "searchbutton"){ var e = document.createEvent('Events'); e.initEvent(type); if (data) { for (var i in data) { e[i] = data[i]; } } document.dispatchEvent(e); return; } 

Брайс Кертис предлагает на этой странице просто изменить линию:

channel.onNativeReady.subscribe(_self.boot);

К:

channel.onNativeReady.subscribeOnce(_self.boot);

В конце файла.

Кажется, это делает трюк для меня и фиксирует подкладку AND menubutton и searchbutton!

@dhaval: Я внес следующие изменения в cordova-1.5.0.js в Android.

Страницы, на которых я не обращал обратную кнопку, работают нормально, но место, где я обрабатываю кнопку «Назад», не работает.

Его даже не в состоянии выбрать функцию

 function handleBackButton() { console.log("Back Button Pressed!"); navigator.app.exitApp(); }