У меня проблема ... (Правда? :-))
Что я хочу сделать?
Мне нужно создать собственный плагин для запуска MapActivity (чтобы показать POI, показать маршруты, ...), и когда mapView закрывается с некоторыми условиями, мне нужно загрузить определенную HTML-страницу.
Итак:
.HTML-страница с событиями JS -> Подключаемый модуль .JS -> Подключаемый модуль .Java - (запуск) -> .Java MapActivity
А когда закончится моя MapActivity:
MapActivity отправляет [Status.ok] или [сообщение] X-> .Java PlugIn -> .JS CallBack -> Загрузить новую страницу
В чем проблема?
Но, к сожалению, у меня есть этот поток:
-> .java Plugin Execute: {Launch (MapActivity); обратный ответ}
и затем моя картографическая активность запускается, но мой обратный вызов уже прошел без каких-либо данных.
Другая проблема: PhoneGap, похоже, отменяет onActivityResult (), невозможно получить данные обратного вызова в MapViewPlugin.java
код?
mapview.js - Плагин
Проблема с callBack , который вызывается до запуска MapActivity.
Спящий режим (2000) - это обходной путь для отображения новой страницы после отображения MapView. Но это не очень хорошая проблема!
MapView.prototype.showItineraryMapView = function(itineraryEncoded, startLat,
startLong, startTitle, startDesc, finishLat, finishLong, finishTitle,
finishDesc, callBack) {
PhoneGap.exec(function() {
sleep(2000);
callBack();
}, function(){} , "MapView", "show_itinerary", [ itineraryEncoded, startLat, startLong,
startTitle, startDesc, finishLat, finishLong, finishTitle,
finishDesc ]);
};
function sleep(ms) {
var dt = new Date();
dt.setTime(dt.getTime() + ms);
while (new Date().getTime() < dt.getTime());
}
MapViewPlugin.java - Плагин
@Override
public PluginResult execute(String action, JSONArray data, String callbackId)
{
Log.i("MapViewPlugin", "Début MapViewPlugin");
PluginResult result = null;
if (action.equals(ACTION_SHOW_ITINERARY))
{
Log.i("MapViewPlugin", "showItineraryMapView");
try
{
return this.showItineraryMapView(data.getString(0), data.getInt(1), data.getInt(2), data.getString(3), data.getString(4), data.getInt(5), data.getInt(6), data.getString(7), data.getString(8));
}
catch (JSONException e)
{
e.printStackTrace();
}
}
else
{
result = new PluginResult(Status.INVALID_ACTION);
Log.d("MapViewPlugin", "Invalid action : " + action + " passed");
}
return result;
}
private PluginResult showItineraryMapView(String encoded_itinerary, int startLat, int startLong, String startTitle, String startDesc, int finishLat, int finishLong, String finishTitle, String finishDesc)
{
Log.i("MapViewPlugin", "Start showMapView()");
Intent iMapView = new Intent(ctx, MapViewActivity.class);
iMapView.putExtra(MODE, MODE_ITINERARY);
iMapView.putExtra(ITINERARY_ENCODED, encoded_itinerary);
iMapView.putExtra(START_LAT, startLat);
iMapView.putExtra(START_LONG, startLong);
iMapView.putExtra(START_TITLE, startTitle);
iMapView.putExtra(START_DESC, startDesc);
iMapView.putExtra(FINISH_LAT, finishLat);
iMapView.putExtra(FINISH_LONG, finishLong);
iMapView.putExtra(FINISH_TITLE, finishTitle);
iMapView.putExtra(FINISH_DESC, finishDesc);
Log.i("MapViewPlugin", "Launching intent...");
ctx.startActivity(iMapView);
return new PluginResult(Status.OK);
}
Я не знаю, хорошее ли это решение, возможно, я ошибаюсь. Кто-нибудь может мне помочь?
Это мой первый вопрос о стековом потоке, поэтому, если вам нужна более высокая точность или если я недостаточно точен, пожалуйста, задайте мне более подробную информацию.
Спасибо'S!