Возвращаясь из 2 разных видов деятельности.Как узнать откуда я - PullRequest
0 голосов
/ 23 ноября 2018

поэтому у меня есть возвращаемое действие, которое возвращает меня к основному виду деятельности с Int.сложность в том, что есть 2 способа вернуться.либо вернитесь с идентификатором местоположения, либо вернитесь с идентификатором маршрута.если он вернется с идентификатором местоположения, он создаст маркер на карте.Однако, если он возвращается с идентификатором маршрута, он рисует линию на карте.Моя проблема в том, что у меня нет никакого способа узнать, вернулся ли я к основной деятельности с идентификатором местоположения или идентификатором маршрута.

if(requestCode == REQUEST_CODE_BOOKMARKS_ACTIVITY)
    {
        if(data != null)
        {
            if(// Check if it's a location id)
            {
                int locationId = data.getIntExtra(BookmarksActivity.LOCATION_ID, 1);
                Log.i("BBB",    locationId + "");
                myDataSource.open();
                com.zayed.zma_at3.model.Location savedLocation = myDataSource.getLocationByID(locationId);
                createMarkerOnLocation(savedLocation.getTitle(),savedLocation.getLat(),savedLocation.getLng());
            }
            else
            {
                int routeId = data.getIntExtra(BookmarksActivity.ROUTE_ID, 1);
                myDataSource.open();
                Route route = myDataSource.getRouteById(routeId);
                route.setLocationPoints(myDataSource.getPointsByRouteId(routeId));

                // Draw line on map
                for(com.zayed.zma_at3.model.Location p : route.getLocationPoints())
                    {
                        Log.i("BBB",  route.getId() +" "+ p.getId() + " " + p.getLat()
                                + " " + p.getLng() + "");
                    }
            }
        }

и я возвращаюсь из этого места:

Intent intent = new Intent();
                intent.putExtra(BookmarksActivity.LOCATION_ID,locationID);
                intent.putExtra(BookmarksActivity.BOOKMARK_TYPE,1);
                ((Activity) context).setResult(Activity.RESULT_OK, intent);
                ((Activity) context).finish();

Маршрут:

Intent intent = new Intent();
                intent.putExtra(BookmarksActivity.ROUTE_ID,routeID);
                intent.putExtra(BookmarksActivity.BOOKMARK_TYPE,2);
                ((Activity) context).setResult(Activity.RESULT_OK, intent);
                ((Activity) context).finish();

1 Ответ

0 голосов
/ 23 ноября 2018

когда вы помещаете свой идентификатор местоположения в дополнения к намерениям, также добавьте идентификатор маршрута как -1 (или что-то, что в любом случае недопустимо в вашем сценарии), и наоборот.Когда вы проверяете результат своей деятельности, сделайте что-то вроде:

   //if the location id is not equal to -1
if (data.getIntExtra(BookmarksActivity.LOCATION_ID, -1) != -1) {
   // it means that there is a location id so do what you want with that
} 

то же самое с вашим идентификатором маршрута

ПРАВКА, чтобы включить код:

Intent intent = new Intent(); 
intent.putExtra(BookmarksActivity.LOCATION_ID,locationID);
intent.putExtra(BookmarksActivity.ROUTE_ID, -1)
intent.putExtra(BookmarksActivity.BOOKMARK_TYPE,1);
((Activity) context).setResult(Activity.RESULT_OK, intent);
((Activity) context).finish();

также:

Intent intent = new Intent();
intent.putExtra(BookmarksActivity.ROUTE_ID,routeID);
intent.putExtra(BookmarksActivity.LOCATION_ID,-1);
intent.putExtra(BookmarksActivity.BOOKMARK_TYPE,2);
((Activity) context).setResult(Activity.RESULT_OK, intent);
((Activity) context).finish();

тогда в вашем результате:

if(requestCode == REQUEST_CODE_BOOKMARKS_ACTIVITY)
{
    if(data != null)
    {
        int temp = data.getIntExtra(BookmarksActivity.LOCATION_ID, -1);
    int temp2 = data.getIntExtra(BookmarksActivity.ROUTE_ID, -1);

        if(temp != -1)
        {
            int locationId = data.getIntExtra(BookmarksActivity.LOCATION_ID, 1);
            Log.i("BBB",    locationId + "");
            myDataSource.open();
            com.zayed.zma_at3.model.Location savedLocation = myDataSource.getLocationByID(locationId);
            createMarkerOnLocation(savedLocation.getTitle(),savedLocation.getLat(),savedLocation.getLng());
        }
        else if(temp2 != -1)
        {
            int routeId = data.getIntExtra(BookmarksActivity.ROUTE_ID, 1);
            myDataSource.open();
            Route route = myDataSource.getRouteById(routeId);
            route.setLocationPoints(myDataSource.getPointsByRouteId(routeId));

            // Draw line on map
            for(com.zayed.zma_at3.model.Location p : route.getLocationPoints())
                {
                    Log.i("BBB",  route.getId() +" "+ p.getId() + " " + p.getLat()
                            + " " + p.getLng() + "");
                }
        }
    }
...