Skip to content

fix IllegalArgumentException from dismiss #135

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 20 additions & 6 deletions app/src/main/java/org/osmtracker/activity/OpenStreetMapUpload.java
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,9 @@ public class OpenStreetMapUpload extends TrackDetailEditor {
private static final CommonsHttpOAuthConsumer oAuthConsumer = new CommonsHttpOAuthConsumer(
OpenStreetMapConstants.OAuth.CONSUMER_KEY,
OpenStreetMapConstants.OAuth.CONSUMER_SECRET);

private ExportToTempFileTask exportToTempFileTask;
private UploadToOpenStreetMapTask uploadToOpenStreetMapTask;

@Override
protected void onCreate(Bundle savedInstanceState) {

Expand Down Expand Up @@ -126,6 +128,16 @@ protected void onResume() {
new RetrieveAccessTokenTask(this, oAuthProvider, oAuthConsumer, verifier).execute();
}
}
@Override
protected void onPause(){
super.onPause();
if(exportToTempFileTask != null){
exportToTempFileTask.parentNotVisible();
}
if(uploadToOpenStreetMapTask != null){
uploadToOpenStreetMapTask.parentNotVisible();
}
}

/**
* Either starts uploading directly if we are authenticated against OpenStreetMap,
Expand All @@ -150,15 +162,17 @@ private void startUpload() {
* Exports track on disk then upload to OSM.
*/
public void uploadToOsm() {
new ExportToTempFileTask(this, trackId) {
exportToTempFileTask = new ExportToTempFileTask(this, trackId) {
@Override
protected void executionCompleted() {
new UploadToOpenStreetMapTask(OpenStreetMapUpload.this, trackId, oAuthConsumer, this.getTmpFile(),
uploadToOpenStreetMapTask = new UploadToOpenStreetMapTask(OpenStreetMapUpload.this, trackId, oAuthConsumer, this.getTmpFile(),
this.getFilename(), etDescription.getText().toString(), etTags.getText().toString(),
Track.OSMVisibility.fromPosition(OpenStreetMapUpload.this.spVisibility.getSelectedItemPosition()))
.execute();
Track.OSMVisibility.fromPosition(OpenStreetMapUpload.this.spVisibility.getSelectedItemPosition()));
uploadToOpenStreetMapTask
.execute();
}
}.execute();
};
exportToTempFileTask.execute();
}

}
13 changes: 11 additions & 2 deletions app/src/main/java/org/osmtracker/activity/TrackDetail.java
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,8 @@ public class TrackDetail extends TrackDetailEditor implements AdapterView.OnItem
* List with track info
*/
private ListView lv;

private ExportToStorageTask exportToStorageTask;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState, R.layout.trackdetail, getIntent().getExtras().getLong(TrackContentProvider.Schema.COL_TRACK_ID));
Expand Down Expand Up @@ -197,6 +198,13 @@ protected void onResume() {
// Click on Waypoint count to see the track's WaypointList
lv.setOnItemClickListener(this);
}
@Override
public void onPause() {
super.onPause();
if(exportToStorageTask != null) {
exportToStorageTask.parentNotVisible();
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
Expand Down Expand Up @@ -230,7 +238,8 @@ public boolean onOptionsItemSelected(MenuItem item) {
startActivity(i);
break;
case R.id.trackdetail_menu_export:
new ExportToStorageTask(this, trackId).execute();
exportToStorageTask = new ExportToStorageTask(this, trackId);
exportToStorageTask.execute();
// Pick last list item (Exported date) and update it
SimpleAdapter adapter = ((SimpleAdapter) lv.getAdapter());
@SuppressWarnings("unchecked")
Expand Down
12 changes: 9 additions & 3 deletions app/src/main/java/org/osmtracker/activity/TrackManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ public class TrackManager extends ListActivity {

/** The previous item visible, or -1; for scrolling back to its position in {@link #onResume()} */
private int prevItemVisible = -1;
private ExportToStorageTask exportToStorageTask;

@Override
protected void onCreate(Bundle savedInstanceState) {
Expand Down Expand Up @@ -116,6 +117,9 @@ protected void onResume() {

@Override
protected void onPause() {
if(exportToStorageTask!= null) {
exportToStorageTask.parentNotVisible();
}
// Remember position in listview (before any adapter change)
prevItemVisible = getListView().getFirstVisiblePosition();

Expand Down Expand Up @@ -242,7 +246,8 @@ public void onClick(DialogInterface dialog, int which) {
ids[i++] = cursor.getLong(idCol);
} while (cursor.moveToNext());

new ExportToStorageTask(TrackManager.this, ids).execute();
exportToStorageTask = new ExportToStorageTask(TrackManager.this, ids);
exportToStorageTask.execute();
}
cursor.close();
}
Expand Down Expand Up @@ -328,8 +333,9 @@ public void onClick(DialogInterface dialog, int which) {
}).create().show();

break;
case R.id.trackmgr_contextmenu_export:
new ExportToStorageTask(this, info.id).execute();
case R.id.trackmgr_contextmenu_export:
exportToStorageTask = new ExportToStorageTask(this, info.id);
exportToStorageTask.execute();
break;
case R.id.trackmgr_contextmenu_osm_upload:
i = new Intent(this, OpenStreetMapUpload.class);
Expand Down
18 changes: 14 additions & 4 deletions app/src/main/java/org/osmtracker/gpx/ExportTrackTask.java
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,11 @@ protected Boolean doInBackground(Void... params) {
}
return true;
}

public void parentNotVisible(){
if(getStatus() == Status.FINISHED || getStatus() == Status.RUNNING) {
dialog.dismiss();
}
}
@Override
protected void onProgressUpdate(Long... values) {
if (values.length == 1) {
Expand All @@ -152,7 +156,9 @@ protected void onProgressUpdate(Long... values) {
} else if (values.length == 3) {
// To initialise the dialog, 3 values are passed to onProgressUpdate()
// trackId, number of track points, number of waypoints
dialog.dismiss();
if(dialog.isShowing()) {
dialog.dismiss();
}

dialog = new ProgressDialog(context);
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
Expand All @@ -170,7 +176,9 @@ protected void onProgressUpdate(Long... values) {

@Override
protected void onPostExecute(Boolean success) {
dialog.dismiss();
if(dialog.isShowing()) {
dialog.dismiss();
}
if (!success) {
new AlertDialog.Builder(context)
.setTitle(android.R.string.dialog_alert_title)
Expand All @@ -181,7 +189,9 @@ protected void onPostExecute(Boolean success) {
.setNeutralButton(android.R.string.ok, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
if(((AlertDialog)dialog).isShowing()){
dialog.dismiss();
}
}
})
.show();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,14 +159,18 @@ public void run() {
protected void onPostExecute(Void result) {
switch (resultCode) {
case -1:
dialog.dismiss();
if(dialog.isShowing()) {
dialog.dismiss();
}
// Internal error, the request didn't start at all
DialogUtils.showErrorDialog(activity,
activity.getResources().getString(R.string.osm_upload_error)
+ ": " + errorMsg);
break;
case HttpStatus.SC_OK:
dialog.dismiss();
if(dialog.isShowing()) {
dialog.dismiss();
}
// Success ! Update database and close activity
DataHelper.setTrackUploadDate(trackId, System.currentTimeMillis(), activity.getContentResolver());

Expand All @@ -185,7 +189,9 @@ public void onClick(DialogInterface dialog, int which) {

break;
case HttpStatus.SC_UNAUTHORIZED:
dialog.dismiss();
if(dialog.isShowing()) {
dialog.dismiss();
}
// Authorization issue. Provide a way to clear credentials
new AlertDialog.Builder(activity)
.setTitle(android.R.string.dialog_alert_title)
Expand All @@ -195,7 +201,9 @@ public void onClick(DialogInterface dialog, int which) {
.setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
if(((AlertDialog)dialog).isShowing()) {
dialog.dismiss();
}
}
})
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
Expand All @@ -205,8 +213,9 @@ public void onClick(DialogInterface dialog, int which) {
editor.remove(OSMTracker.Preferences.KEY_OSM_OAUTH_TOKEN);
editor.remove(OSMTracker.Preferences.KEY_OSM_OAUTH_SECRET);
editor.commit();

dialog.dismiss();
if(((AlertDialog)dialog).isShowing()) {
dialog.dismiss();
}
}
}).create().show();

Expand All @@ -220,8 +229,9 @@ public void onClick(DialogInterface dialog, int which) {
while ( (line = reader.readLine()) != null) {
sb.append(line).append(System.getProperty("line.separator"));
}

dialog.dismiss();
if(dialog.isShowing()) {
dialog.dismiss();
}

DialogUtils.showErrorDialog(activity,
activity.getResources().getString(R.string.osm_upload_bad_response)
Expand Down Expand Up @@ -256,4 +266,9 @@ protected Void doInBackground(Void... params) {

return null;
}
public void parentNotVisible(){
if(getStatus() == Status.FINISHED || getStatus() == Status.RUNNING) {
dialog.dismiss();
}
}
}