/* * #%L * Wheelmap - App * %% * Copyright (C) 2011 - 2012 Michal Harakal - Michael Kroez - Sozialhelden e.V. * %% * Wheelmap App based on the Wheelmap Service by Sozialhelden e.V. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS-IS" BASIS * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * #L% */ package org.wheelmap.android.fragment; import org.wheelmap.android.activity.profile.ProfileActivity; import org.wheelmap.android.activity.WheelchairStateActivity; import org.wheelmap.android.activity.WrapperActivity; import org.wheelmap.android.app.WheelmapApp; import org.wheelmap.android.fragment.ErrorDialogFragment.OnErrorDialogListener; import org.wheelmap.android.manager.SupportManager; import org.wheelmap.android.manager.SupportManager.Category; import org.wheelmap.android.manager.SupportManager.NodeType; import org.wheelmap.android.manager.SupportManager.WheelchairAttributes; import org.wheelmap.android.model.Extra; import org.wheelmap.android.model.POIHelper; import org.wheelmap.android.model.PrepareDatabaseHelper; import org.wheelmap.android.model.Request; import org.wheelmap.android.model.WheelchairFilterState; import org.wheelmap.android.model.Wheelmap.POIs; import org.wheelmap.android.modules.ICredentials; import org.wheelmap.android.modules.UserCredentials; import org.wheelmap.android.online.R; import org.wheelmap.android.service.RestService; import org.wheelmap.android.service.RestServiceException; import org.wheelmap.android.service.RestServiceHelper; import org.wheelmap.android.utils.DetachableResultReceiver; import org.wheelmap.android.utils.DetachableResultReceiver.Receiver; import org.wheelmap.android.utils.FeatureToggles; import org.wheelmap.android.utils.UtilsMisc; import android.app.Activity; import android.content.ContentUris; import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.LoaderManager.LoaderCallbacks; import android.support.v4.content.CursorLoader; import android.support.v4.content.Loader; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.FrameLayout; import android.widget.TextView; import android.widget.Toast; import java.util.ArrayList; import java.util.Locale; import java.util.Map; import de.akquinet.android.androlog.Log; public class POIDetailEditableFragment extends Fragment implements OnErrorDialogListener, Receiver, OnClickListener, LoaderCallbacks<Cursor> { public static final int REQUEST_CODE_LOGIN = 1421; public final static String TAG = POIDetailEditableFragment.class .getSimpleName(); private final static int LOADER_CONTENT = 0; private final static int LOADER_TMP = 1; private static final int DIALOG_ID_NEWPOI = 1; private static final int DIALOG_ID_NETWORK_ERROR = 2; private final static int FOCUS_TO_NOTHING = 0; private final static int FOCUS_TO_ADRESS = 1; private final static int FOCUS_TO_COMMENT = 2; private ICredentials mCredentials; private EditText nameText; private TextView nodetypeText; private EditText commentText; private EditText streetText; private EditText housenumText; private EditText postcodeText; private EditText cityText; private EditText websiteText; private EditText phoneText; private TextView geolocation_text; private TextView accessStateText; private TextView toiletStateText; private ViewGroup accessStateLayout; private ViewGroup toiletStateLayout; private FrameLayout edit_nodetype_container; private FrameLayout edit_geolocation_container; private Long poiID = Extra.ID_UNKNOWN; private String wmID; private WheelchairFilterState mWheelchairFilterState; private WheelchairFilterState mWheelchairToiletFilterState; private double mLatitude; private double mLongitude; private int mNodeType; private Map<WheelchairFilterState, WheelchairAttributes> mWSAttributes; private Map<WheelchairFilterState, SupportManager.WheelchairToiletAttributes> mWheelchairToiletAttributes; private OnPOIDetailEditableListener mListener; private boolean mTemporaryStored; private DetachableResultReceiver mReceiver; private int focus; public interface OnPOIDetailEditableListener { public void onEditSave(boolean quit); public void onEditWheelchairState(WheelchairFilterState state); public void onEditWheelchairToiletState(WheelchairFilterState wState); public void onEditGeolocation(double latitude, double longitude); public void onEditNodetype(int nodetype); public void requestExternalEditedState( POIDetailEditableFragment fragment); public void onStoring(boolean isRefreshing); } public static POIDetailEditableFragment newInstance(long poiId, int focus) { Bundle b = new Bundle(); b.putLong(Extra.POI_ID, poiId); b.putInt("Focus", focus); POIDetailEditableFragment fragment = new POIDetailEditableFragment(); fragment.setArguments(b); return fragment; } public POIDetailEditableFragment() { Log.d(TAG, "constructor called "); } @Override public void onAttach(Activity activity) { super.onAttach(activity); if (activity instanceof OnPOIDetailEditableListener) { mListener = (OnPOIDetailEditableListener) activity; } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mCredentials = new UserCredentials(getActivity().getApplicationContext()); Log.d(TAG, "onCreate"); setHasOptionsMenu(true); mWSAttributes = SupportManager.wsAttributes; mWheelchairToiletAttributes = SupportManager.wheelchairToiletAttributes; poiID = getArguments().getLong(Extra.POI_ID); focus = getArguments().getInt("Focus"); mReceiver = new DetachableResultReceiver(new Handler()); mReceiver.setReceiver(this); } public void initViews(View parent) { nameText = (EditText) parent.findViewById(R.id.name); nodetypeText = (TextView) parent.findViewById(R.id.nodetype); commentText = (EditText) parent.findViewById(R.id.comment); streetText = (EditText) parent.findViewById(R.id.street); housenumText = (EditText) parent.findViewById(R.id.housenum); postcodeText = (EditText) parent.findViewById(R.id.postcode); cityText = (EditText) parent.findViewById(R.id.city); websiteText = (EditText) parent.findViewById(R.id.website); phoneText = (EditText) parent.findViewById(R.id.phone); if (!FeatureToggles.isPhoneNumberEditable) { phoneText.setVisibility(View.GONE); } geolocation_text = (TextView) parent.findViewById(R.id.geolocation); accessStateText = (TextView) parent.findViewById(R.id.access_state_text); accessStateLayout = (ViewGroup) parent.findViewById(R.id.wheelchair_access_state_layout); toiletStateText = (TextView) parent.findViewById(R.id.toilet_state_text); toiletStateLayout = (ViewGroup) parent.findViewById(R.id.wheelchair_toilet_state_layout); edit_nodetype_container = (FrameLayout) parent.findViewById(R.id.edit_nodetype); edit_geolocation_container = (FrameLayout) parent.findViewById(R.id.edit_geolocation); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_detail_editable, container, false); v.findViewById(R.id.detail_save).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { save(); return; } }); initViews(v); if (focus == FOCUS_TO_ADRESS) { streetText.requestFocus(); } else if (focus == FOCUS_TO_COMMENT) { commentText.requestFocus(); } return v; } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); setWheelchairState(WheelchairFilterState.UNKNOWN); accessStateLayout.setOnClickListener(this); setWheelchairToiletState(WheelchairFilterState.TOILET_UNKNOWN); toiletStateLayout.setOnClickListener(this); edit_nodetype_container.setOnClickListener(this); edit_geolocation_container.setOnClickListener(this); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Log.d(TAG, "onActivityCreated"); retrieve(savedInstanceState); if (!mCredentials.isLoggedIn()) { Intent intent = new Intent(getActivity(), ProfileActivity.class); startActivityForResult(intent, REQUEST_CODE_LOGIN); } } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE_LOGIN) { if (resultCode != Activity.RESULT_OK) { getActivity().onBackPressed(); } } if (requestCode == Request.SELECT_WHEELCHAIRSTATE && resultCode == Activity.RESULT_OK && data != null) { if (data.hasExtra(WheelchairAccessibilityStateFragment.TAG)) { WheelchairFilterState state = WheelchairFilterState .valueOf(data.getIntExtra(WheelchairAccessibilityStateFragment.TAG, Extra.UNKNOWN)); if (state != null && mListener != null) { setWheelchairState(state); mListener.onEditWheelchairState(state); } } else if (data.hasExtra(WheelchairToiletStateFragment.TAG)) { WheelchairFilterState state = WheelchairFilterState .valueOf(data.getIntExtra(WheelchairToiletStateFragment.TAG, Extra.UNKNOWN)); if (state != null && mListener != null) { setWheelchairToiletState(state); mListener.onEditWheelchairToiletState(state); } } } if (requestCode == Request.SELECT_GEOLOCATION && resultCode == Activity.RESULT_OK && data != null) { double latitude = data.getDoubleExtra(Extra.LATITUDE, mLatitude); double longitude = data.getDoubleExtra(Extra.LONGITUDE, mLongitude); setGeolocation(latitude, longitude); if (mListener != null) { mListener.onEditGeolocation(latitude, longitude); } } if (requestCode == Request.SELECT_NODETYPE && resultCode == Activity.RESULT_OK && data != null) { int nodeType = data.getIntExtra(Extra.NODETYPE, mNodeType); setNodetype(nodeType); if (mListener != null) { mListener.onEditNodetype(nodeType); } } } private void retrieve(Bundle bundle) { boolean loadTempStore = mTemporaryStored || (bundle != null && bundle .containsKey(Extra.TEMPORARY_STORED)); int loaderId; if (loadTempStore) { loaderId = LOADER_TMP; } else { loaderId = LOADER_CONTENT; } Log.d(TAG, "retrieve: init loader id = " + loaderId); getLoaderManager().initLoader(loaderId, null, this); } @Override public void onSaveInstanceState(Bundle outState) { Log.d(TAG, "onSaveInstanceState"); super.onSaveInstanceState(outState); outState.putBoolean(Extra.TEMPORARY_STORED, true); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.ab_detaileditable_fragment, menu); super.onCreateOptionsMenu(menu, inflater); } @Override public boolean onOptionsItemSelected(MenuItem item) { return false; } @Override public void onClick(View v) { closeKeyboard(); int id = v.getId(); switch (id) { case R.id.wheelchair_access_state_layout: { Intent intent = new Intent(getActivity(), WheelchairStateActivity.class); intent.putExtra(Extra.WHEELCHAIR_STATE, mWheelchairFilterState.getId()); startActivityForResult(intent, Request.SELECT_WHEELCHAIRSTATE); break; } case R.id.wheelchair_toilet_state_layout: { Intent intent = new Intent(getActivity(), WheelchairStateActivity.class); intent.putExtra(Extra.WHEELCHAIR_TOILET_STATE, mWheelchairToiletFilterState.getId()); startActivityForResult(intent, Request.SELECT_WHEELCHAIRSTATE); break; } case R.id.edit_geolocation: { Intent intent = new Intent(getActivity(), WrapperActivity.class); intent.putExtra(WrapperActivity.EXTRA_FRAGMENT_CLASS_NAME, EditPositionFragment.class.getName()); intent.putExtra(Extra.LATITUDE, mLatitude); intent.putExtra(Extra.LONGITUDE, mLongitude); startActivityForResult(intent, Request.SELECT_GEOLOCATION); break; } case R.id.edit_nodetype: { Intent intent = new Intent(getActivity(), WrapperActivity.class); intent.putExtra(WrapperActivity.EXTRA_FRAGMENT_CLASS_NAME, NodetypeSelectFragment.class.getName()); intent.putExtra(Extra.NODETYPE, mNodeType); startActivityForResult(intent, Request.SELECT_NODETYPE); break; } } } public void save() { ContentValues values = retrieveContentValues(); if (values == null) { return; } if (!values.containsKey(POIs.NODETYPE_ID)) { showErrorMessage(getString(R.string.error_category_missing_title), getString(R.string.error_category_missing_message), Extra.UNKNOWN); return; } else if (mWheelchairFilterState == WheelchairFilterState.UNKNOWN) { showErrorMessage( getString(R.string.error_wheelchairstate_missing_title), getString(R.string.error_wheelchairstate_missing_message), Extra.UNKNOWN); return; } if (values.containsKey(POIs.WEBSITE)) { String website = values.getAsString(POIs.WEBSITE); website = website.toLowerCase(Locale.US); if (!website.startsWith("http://") && !website.startsWith( "https://")) { website = "http://" + website; } if (!android.util.Patterns.WEB_URL.matcher(website).matches()) { showErrorMessage(null, getString(android.R.string.httpErrorBadUrl), -1); return; } values.put(POIs.WEBSITE, website); } values.put(POIs.DIRTY, POIs.DIRTY_ALL); PrepareDatabaseHelper.editCopy(getActivity().getContentResolver(), poiID, values); RestServiceHelper.executeUpdateServer(getActivity(), mReceiver); } private void quit(boolean quit) { if (mListener != null) { mListener.onEditSave(quit); } } @Override public void onErrorDialogClose(int id) { Log.d(TAG, "onErrorDialogClose"); if (id == DIALOG_ID_NEWPOI) { quit(false); } } @Override public Loader<Cursor> onCreateLoader(int id, Bundle arguments) { Log.d(TAG, "onCreateLoader: id = " + id); Uri uri = null; if (id == LOADER_CONTENT) { uri = ContentUris.withAppendedId(POIs.CONTENT_URI_COPY, poiID); } else { uri = POIs.CONTENT_URI_TMP; } Log.d(TAG, "onCreateLoader: uri = " + uri); return new CursorLoader(getActivity(), uri, null, null, null, null); } @Override public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) { Log.d(TAG, "onLoadFinished loader id = " + loader.getId()); load(cursor); } @Override public void onLoaderReset(Loader<Cursor> arg0) { } private void load(Cursor cursor) { if (cursor == null || cursor.getCount() < 1) { return; } UtilsMisc.dumpCursorToLog(TAG, cursor); cursor.moveToFirst(); WheelchairFilterState accessState = POIHelper.getWheelchair(cursor); WheelchairFilterState toiletState = POIHelper.getWheelchairToilet(cursor); String name = POIHelper.getName(cursor); String comment = POIHelper.getComment(cursor); double latitude = POIHelper.getLatitude(cursor); double longitude = POIHelper.getLongitude(cursor); int nodeType = POIHelper.getNodeTypeId(cursor); setGeolocation(latitude, longitude); setNodetype(nodeType); setWheelchairState(accessState); setWheelchairToiletState(toiletState); if (!getString(R.string.poi_new_default_name).equals(name)) { nameText.setText(name); } commentText.setText(comment); streetText.setText(POIHelper.getStreet(cursor)); housenumText.setText(POIHelper.getHouseNumber(cursor)); postcodeText.setText(POIHelper.getPostcode(cursor)); cityText.setText(POIHelper.getCity(cursor)); websiteText.setText(POIHelper.getWebsite(cursor)); phoneText.setText(POIHelper.getPhone(cursor)); TextWatcher textWatcher = new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { //Toast.makeText(yourActivity.this,"changed",0).show(); changedEdit(true); } @Override public void afterTextChanged(Editable editable) { } }; ArrayList<EditText> firstList = new ArrayList<EditText>(); firstList.add(nameText); firstList.add(commentText); firstList.add(streetText); firstList.add(housenumText); firstList.add(cityText); firstList.add(websiteText); firstList.add(phoneText); for (int i = 0; i < firstList.size(); i++) { firstList.get(i).addTextChangedListener(textWatcher); } wmID = POIHelper.getWMId(cursor); retrieveExternalEditedState(); } private void changedEdit(boolean changed) { WheelmapApp app = (WheelmapApp) this.getActivity().getApplicationContext(); app.setChangedText(changed); } private void retrieveExternalEditedState() { Log.d(TAG, "retrieveExternalEditedState"); if (mListener != null) { mListener.requestExternalEditedState(this); } } private ContentValues retrieveContentValues() { ContentValues values = new ContentValues(); try { if (nameText == null) { return null; } String name = nameText.getText().toString(); if (!TextUtils.isEmpty(name)) { values.put(POIs.NAME, name); } SupportManager sm = WheelmapApp.getSupportManager(); if (mNodeType != SupportManager.UNKNOWN_TYPE) { NodeType nodeType = sm.lookupNodeType(mNodeType); Category category = sm.lookupCategory(nodeType.categoryId); values.put(POIs.CATEGORY_ID, nodeType.categoryId); values.put(POIs.CATEGORY_IDENTIFIER, category.identifier); values.put(POIs.NODETYPE_IDENTIFIER, nodeType.identifier); values.put(POIs.NODETYPE_ID, mNodeType); } values.put(POIs.LATITUDE, mLatitude); values.put(POIs.LONGITUDE, mLongitude); values.put(POIs.WHEELCHAIR, mWheelchairFilterState.getId()); values.put(POIs.WHEELCHAIR_TOILET, mWheelchairToiletFilterState.getId()); String description = commentText.getText().toString(); if (!TextUtils.isEmpty(description)) { values.put(POIs.DESCRIPTION, description); } String street = streetText.getText().toString(); if (!TextUtils.isEmpty(street)) { values.put(POIs.STREET, street); } String housenum = housenumText.getText().toString(); if (!TextUtils.isEmpty(housenum)) { values.put(POIs.HOUSE_NUM, housenum); } String postcode = postcodeText.getText().toString(); if (!TextUtils.isEmpty(postcode)) { values.put(POIs.POSTCODE, postcode); } String city = cityText.getText().toString(); if (!TextUtils.isEmpty(city)) { values.put(POIs.CITY, city); } String website = websiteText.getText().toString(); if (!TextUtils.isEmpty(website)) { values.put(POIs.WEBSITE, website); } if (FeatureToggles.isPhoneNumberEditable) { String phone = phoneText.getText().toString(); if (!TextUtils.isEmpty(phone)) { values.put(POIs.PHONE, phone); } } } catch (NullPointerException npex) { Log.d("Tag:PoiDetailEditableFragment", "NullPointException occurred"); Toast.makeText(this.getActivity().getApplicationContext(), getResources().getString(R.string.error_internal_error), Toast.LENGTH_LONG).show(); return null; } return values; } public void setWheelchairState(WheelchairFilterState newState) { if (newState == null || mWSAttributes.get(newState) == null) { return; } mWheelchairFilterState = newState; try { if (mWheelchairFilterState.getId() == WheelchairFilterState.UNKNOWN.getId()) { accessStateText.setBackgroundResource(R.drawable.detail_button_grey); } else if (mWheelchairFilterState.getId() == WheelchairFilterState.YES.getId()) { accessStateText.setBackgroundResource(R.drawable.detail_button_green); } else if (mWheelchairFilterState.getId() == WheelchairFilterState.LIMITED.getId()) { accessStateText.setBackgroundResource(R.drawable.detail_button_orange); } else if (mWheelchairFilterState.getId() == WheelchairFilterState.NO.getId()) { accessStateText.setBackgroundResource(R.drawable.detail_button_red); } else if (mWheelchairFilterState.getId() == WheelchairFilterState.NO_PREFERENCE.getId()) { accessStateText.setBackgroundResource(R.drawable.detail_button_grey); } else { accessStateText.setBackgroundResource(R.drawable.detail_button_grey); } } catch (OutOfMemoryError e) { System.gc(); } accessStateText.setText(mWSAttributes.get(newState).titleStringId); } public void setWheelchairToiletState(WheelchairFilterState newState) { if (newState == null || mWheelchairToiletAttributes.get(newState) == null) { return; } mWheelchairToiletFilterState = newState; try { if (mWheelchairToiletFilterState.getId() == WheelchairFilterState.TOILET_UNKNOWN.getId()) { toiletStateText.setBackgroundResource(R.drawable.detail_button_grey); } else if (mWheelchairToiletFilterState.getId() == WheelchairFilterState.TOILET_YES.getId()) { toiletStateText.setBackgroundResource(R.drawable.detail_button_green); } else if (mWheelchairToiletFilterState.getId() == WheelchairFilterState.TOILET_NO.getId()) { toiletStateText.setBackgroundResource(R.drawable.detail_button_red); } else if (mWheelchairToiletFilterState.getId() == WheelchairFilterState.NO_PREFERENCE.getId()) { toiletStateText.setBackgroundResource(R.drawable.detail_button_grey); } else { toiletStateText.setBackgroundResource(R.drawable.detail_button_grey); } } catch (OutOfMemoryError e) { System.gc(); } toiletStateText.setText(mWheelchairToiletAttributes.get(newState).titleStringId); } public void setGeolocation(double latitude, double longitude) { if (latitude == Extra.UNKNOWN || longitude == Extra.UNKNOWN) { return; } mLatitude = latitude; mLongitude = longitude; String positionText = String.format("%s: (%.6f:%.6f)", getResources() .getString(R.string.position_geopoint), mLatitude, mLongitude); geolocation_text.setText(positionText); } public void setNodetype(int nodetype) { if (nodetype == SupportManager.UNKNOWN_TYPE) { return; } mNodeType = nodetype; SupportManager manager = WheelmapApp.getSupportManager(); NodeType nodeType = manager.lookupNodeType(nodetype); nodetypeText.setText(nodeType.localizedName); } public void showErrorMessage(String title, String message, int id) { FragmentManager fm = getActivity().getSupportFragmentManager(); ErrorDialogFragment errorDialog = ErrorDialogFragment.newInstance( title, message, id); if (errorDialog == null) { return; } errorDialog.setOnErrorDialogListener(this); errorDialog.show(fm, ErrorDialogFragment.TAG); } public void showNetworkErrorMessage(RestServiceException e, int id) { FragmentManager fm = getFragmentManager(); ErrorDialogFragment errorDialog = ErrorDialogFragment.newInstance(e, id); if (errorDialog == null) { return; } errorDialog.setOnErrorDialogListener(this); errorDialog.show(fm, ErrorDialogFragment.TAG); } public void closeKeyboard() { View view = getView().findFocus(); if (view == null || !(view instanceof EditText)) { return; } InputMethodManager imm = (InputMethodManager) getActivity() .getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(view.getWindowToken(), 0); } private void storeTemporary() { ContentValues values = retrieveContentValues(); if (values == null) { return; } if (!TextUtils.isEmpty(wmID)) { values.put(POIs.WM_ID, wmID); } long id = PrepareDatabaseHelper.storeTemporary(getActivity() .getContentResolver(), values); Log.d(TAG, "storeTemporary wmId = " + wmID + " id = " + id); getLoaderManager().destroyLoader(LOADER_CONTENT); mTemporaryStored = true; } private void storingStatus(boolean storing) { if (mListener != null) { mListener.onStoring(storing); } } private void showNewPoiOrQuit() { if (TextUtils.isEmpty(wmID) && isAdded()) { showErrorMessage(getString(R.string.error_newpoi_title), getString(R.string.error_newpoi_message), DIALOG_ID_NEWPOI); } else { quit(false); } } private void showError(String errorMessage) { if (errorMessage == null) { showErrorMessage(getString(R.string.error_title_occurred), getString(R.string.error_network_unknown_failure), DIALOG_ID_NETWORK_ERROR); } else { showErrorMessage(getString(R.string.error_title_occurred), errorMessage, DIALOG_ID_NETWORK_ERROR); } } @Override public void onResume() { super.onResume(); mCredentials = new UserCredentials(getActivity().getApplicationContext()); } /** * {@inheritDoc} */ @Override public void onReceiveResult(int resultCode, Bundle resultData) { Log.d(TAG, "onReceiveResult resultCode = " + resultCode); switch (resultCode) { case RestService.STATUS_RUNNING: { storingStatus(true); break; } case RestService.STATUS_FINISHED: { storingStatus(false); showNewPoiOrQuit(); break; } case RestService.STATUS_ERROR: { storingStatus(false); if (resultData.containsKey(RestService.ERROR_MESSAGE)) { showError(resultData.getString(RestService.ERROR_MESSAGE)); } else { showError(null); } break; } } } }