From c6b98b14f8dd6233830bc7f5ad6168db213014bd Mon Sep 17 00:00:00 2001 From: Julian Winkler Date: Fri, 1 Sep 2023 12:39:20 +0200 Subject: [PATCH] Resources + LayoutInflater: throw same Exceptions as on AOSP --- src/api-impl/android/content/res/AssetManager.java | 2 +- src/api-impl/android/content/res/Resources.java | 12 ++++++++---- src/api-impl/android/view/LayoutInflater.java | 10 +++++++--- src/api-impl/android/view/ViewGroup.java | 6 +++++- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/api-impl/android/content/res/AssetManager.java b/src/api-impl/android/content/res/AssetManager.java index a6253be8..d749a23d 100644 --- a/src/api-impl/android/content/res/AssetManager.java +++ b/src/api-impl/android/content/res/AssetManager.java @@ -572,7 +572,7 @@ public final class AssetManager { * @param fileName The name of the file to retrieve. */ public final XmlResourceParser openXmlResourceParser(int cookie, - String fileName) throws /*IO*/ Exception { + String fileName) throws IOException { /* XmlBlock block = openXmlBlockAsset(cookie, fileName); XmlResourceParser rp = block.newParser(); block.close(); diff --git a/src/api-impl/android/content/res/Resources.java b/src/api-impl/android/content/res/Resources.java index 2de16f4b..ae321c25 100644 --- a/src/api-impl/android/content/res/Resources.java +++ b/src/api-impl/android/content/res/Resources.java @@ -940,7 +940,7 @@ public class Resources { * * @see #getXml */ - public XmlResourceParser getLayout(int id) throws /*NotFound*/ Exception { + public XmlResourceParser getLayout(int id) throws NotFoundException { return loadXmlResourceParser(id, "layout"); } @@ -2280,7 +2280,7 @@ public class Resources { } /*package*/ XmlResourceParser loadXmlResourceParser(int id, String type) - throws /*NotFound*/ Exception { + throws NotFoundException { synchronized (mAccessLock) { TypedValue value = mTmpValue; if (value == null) { @@ -2297,8 +2297,12 @@ public class Resources { } /*package*/ XmlResourceParser loadXmlResourceParser(String file, int id, - int assetCookie, String type) throws /*NotFound*/ Exception { - return mAssets.openXmlResourceParser(assetCookie, file); + int assetCookie, String type) throws NotFoundException { + try { + return mAssets.openXmlResourceParser(assetCookie, file); + } catch (IOException e) { + throw new RuntimeException(e); + } /* if (id != 0) { try { // These may be compiled... diff --git a/src/api-impl/android/view/LayoutInflater.java b/src/api-impl/android/view/LayoutInflater.java index c428fe3c..538306c9 100644 --- a/src/api-impl/android/view/LayoutInflater.java +++ b/src/api-impl/android/view/LayoutInflater.java @@ -82,15 +82,19 @@ public class LayoutInflater { return view; } - public View inflate(int resource, ViewGroup root) throws Exception { + public View inflate(int resource, ViewGroup root) { return inflate(resource, root, root != null); } - public View inflate(int layoutResID, ViewGroup root, boolean attachToRoot) throws Exception { + public View inflate(int layoutResID, ViewGroup root, boolean attachToRoot) { XmlResourceParser xpp = Context.this_application.getResources().getLayout(layoutResID); - return inflate(xpp, root, attachToRoot); + try { + return inflate(xpp, root, attachToRoot); + } catch (Exception e) { + throw new RuntimeException(e); + } } public View inflate(XmlPullParser parser, ViewGroup root, boolean attachToRoot) throws Exception { diff --git a/src/api-impl/android/view/ViewGroup.java b/src/api-impl/android/view/ViewGroup.java index 1cb6366f..47bef022 100644 --- a/src/api-impl/android/view/ViewGroup.java +++ b/src/api-impl/android/view/ViewGroup.java @@ -115,7 +115,11 @@ public class ViewGroup extends View implements ViewParent, ViewManager { protected native void native_removeView(long widget, long child); public View getChildAt(int index) { - return children.get(index); + try { + return children.get(index); + } catch (IndexOutOfBoundsException e) { + return null; + } } public int indexOfChild(View child) {