Fixed some crashes caused by dialog dismissals in the FB library

pull/14/head
Sam Bosley 12 years ago
parent b99454d07d
commit dc900784bb

@ -100,7 +100,7 @@ public class FbDialog extends Dialog {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
mListener.onCancel(); mListener.onCancel();
FbDialog.this.dismiss(); tryDismissDialog(FbDialog.this);
} }
}); });
Drawable crossDrawable = getContext().getResources().getDrawable(R.drawable.close); Drawable crossDrawable = getContext().getResources().getDrawable(R.drawable.close);
@ -149,11 +149,11 @@ public class FbDialog extends Dialog {
mListener.onFacebookError(new FacebookError(error)); mListener.onFacebookError(new FacebookError(error));
} }
FbDialog.this.dismiss(); tryDismissDialog(FbDialog.this);
return true; return true;
} else if (url.startsWith(Facebook.CANCEL_URI)) { } else if (url.startsWith(Facebook.CANCEL_URI)) {
mListener.onCancel(); mListener.onCancel();
FbDialog.this.dismiss(); tryDismissDialog(FbDialog.this);
return true; return true;
} else if (url.contains(DISPLAY_STRING)) { } else if (url.contains(DISPLAY_STRING)) {
return false; return false;
@ -170,20 +170,24 @@ public class FbDialog extends Dialog {
super.onReceivedError(view, errorCode, description, failingUrl); super.onReceivedError(view, errorCode, description, failingUrl);
mListener.onError( mListener.onError(
new DialogError(description, errorCode, failingUrl)); new DialogError(description, errorCode, failingUrl));
FbDialog.this.dismiss(); tryDismissDialog(FbDialog.this);
} }
@Override @Override
public void onPageStarted(WebView view, String url, Bitmap favicon) { public void onPageStarted(WebView view, String url, Bitmap favicon) {
Util.logd("Facebook-WebView", "Webview loading URL: " + url); Util.logd("Facebook-WebView", "Webview loading URL: " + url);
super.onPageStarted(view, url, favicon); super.onPageStarted(view, url, favicon);
mSpinner.show(); try {
mSpinner.show();
} catch (Exception e) {
// Activity killed or something
}
} }
@Override @Override
public void onPageFinished(WebView view, String url) { public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url); super.onPageFinished(view, url);
mSpinner.dismiss(); tryDismissDialog(mSpinner);
/* /*
* Once webview is fully loaded, set the mContent background to be transparent * Once webview is fully loaded, set the mContent background to be transparent
* and make visible the 'x' image. * and make visible the 'x' image.
@ -193,4 +197,12 @@ public class FbDialog extends Dialog {
mCrossImage.setVisibility(View.VISIBLE); mCrossImage.setVisibility(View.VISIBLE);
} }
} }
private void tryDismissDialog(Dialog d) {
try {
d.dismiss();
} catch (Exception e) {
// Activity was killed or something
}
}
} }

Loading…
Cancel
Save