У меня есть веб-приложение, которое загружает почти все содержимое с помощью функции jQuery AJAX
.Моя проблема здесь в том, что когда я нажимаю на кнопку возврата на мобильном устройстве, она не запускается, а закрывается или перезагружается.Со своего веб-сайта я создал функцию jquery, чтобы вернуться и работает нормально, поэтому я подумал о том, чтобы выполнить эту функцию внутри кода Android с предыдущим URL-адресом сохранения.Поэтому я создал JavascriptInterface
, чтобы получить предыдущий URL из jQuery FSAndroid.setAsycUrlInterface(url)
, но моя проблема в том, как мне выполнить jsBackAsync(from, url)
внутри моего кода Android в onKeyDown
?
Вот мой класс JavascriptInterface
public class AsyncInterface {
Context iContext;
AsyncInterface(Context contex) {
iContext = contex;
}
@JavascriptInterface
public void setAsycUrlInterface(String geturl) {
SharedPreferences prefs = getSharedPreferences(getPackageName(), MODE_PRIVATE);
SharedPreferences.Editor edit = prefs.edit();
edit.putString("lastAsyncUrl", geturl);
edit.commit();
}
}
Вот метод onKeyDown
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && shopwebview.canGoBack()) {
shopwebview.goBack();
/* Something like this i want to do
SharedPreferences asyncprefs = getSharedPreferences(getPackageName(), MODE_PRIVATE);
String lastAsyncUrlTab = asyncprefs.getString("lastAsyncUrl", "");
if(!lastAsyncUrlTab.equals("")) {
jsBackAsync("Android", lastAsyncUrlTab);
}
*/
return true;
}
return super.onKeyDown(keyCode, event);
}
Вот мой код jquery
$(document).ready(function(){
$('a.AsyncUrl').click(function(){
var url = $(this).attr('href');
FSAndroid.setAsycUrlInterface(url);
});
function jsBackAsync(from="button", url){
if(from == 'Android'){
/*Clear the back url or set new one here*/
FSAndroid.setAsycUrlInterface(null);
}
$('#PageSet').load(url);
}
});