From 98e7989ccb11d1f76bf9f05ba5f1527e26a9ae1e Mon Sep 17 00:00:00 2001 From: Julian Winkler Date: Fri, 27 Sep 2024 15:11:00 +0200 Subject: [PATCH] api-impl: fixes for apps using old support library --- src/api-impl/android/app/Activity.java | 3 ++- src/api-impl/android/content/Intent.java | 1 + src/api-impl/android/graphics/Paint.java | 4 ++++ src/api-impl/android/view/LayoutInflater.java | 1 + src/api-impl/android/view/MenuItem.java | 2 ++ src/api-impl/android/view/ViewGroup.java | 2 +- src/api-impl/android/widget/PopupMenu.java | 6 ++++++ src/api-impl/android/widget/Spinner.java | 4 +++- 8 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/api-impl/android/app/Activity.java b/src/api-impl/android/app/Activity.java index 733e32cd..929d8a4b 100644 --- a/src/api-impl/android/app/Activity.java +++ b/src/api-impl/android/app/Activity.java @@ -268,7 +268,8 @@ public class Activity extends ContextThemeWrapper implements Window.Callback, La System.out.printf("%x\n", root_view.id); System.out.println("~~~~~~~~~~~"); - setContentView(root_view); + window.setContentView(root_view); + onContentChanged(); } public void setContentView(View view, ViewGroup.LayoutParams layoutParams) { diff --git a/src/api-impl/android/content/Intent.java b/src/api-impl/android/content/Intent.java index dee20d64..17fbe922 100644 --- a/src/api-impl/android/content/Intent.java +++ b/src/api-impl/android/content/Intent.java @@ -350,6 +350,7 @@ public class Intent implements Parcelable { public void setExtrasClassLoader(ClassLoader loader) {} public Intent setClassName(Context packageContext, String className) { + setComponent(new ComponentName(packageContext, className)); return this; } diff --git a/src/api-impl/android/graphics/Paint.java b/src/api-impl/android/graphics/Paint.java index 1d335e78..f5bca14a 100644 --- a/src/api-impl/android/graphics/Paint.java +++ b/src/api-impl/android/graphics/Paint.java @@ -37,6 +37,10 @@ public class Paint { native_set_color(paint, color); } + public void setARGB(int a, int r, int g, int b) { + setColor(Color.argb(a, r, g, b)); + } + public int getColor() { return native_get_color(paint); } diff --git a/src/api-impl/android/view/LayoutInflater.java b/src/api-impl/android/view/LayoutInflater.java index d88f2321..34edd25c 100644 --- a/src/api-impl/android/view/LayoutInflater.java +++ b/src/api-impl/android/view/LayoutInflater.java @@ -84,6 +84,7 @@ public class LayoutInflater { context = new ContextThemeWrapper(context, themeResId); } ta.recycle(); + constructor.setAccessible(true); View view_instance = (View)constructor.newInstance(context, attrs); return view_instance; diff --git a/src/api-impl/android/view/MenuItem.java b/src/api-impl/android/view/MenuItem.java index 49167595..fa0f625c 100644 --- a/src/api-impl/android/view/MenuItem.java +++ b/src/api-impl/android/view/MenuItem.java @@ -67,4 +67,6 @@ public interface MenuItem { public CharSequence getTitleCondensed(); public CharSequence getTitle(); + + public MenuItem setNumericShortcut(char numericChar); } diff --git a/src/api-impl/android/view/ViewGroup.java b/src/api-impl/android/view/ViewGroup.java index 99e32ecd..4e21938b 100644 --- a/src/api-impl/android/view/ViewGroup.java +++ b/src/api-impl/android/view/ViewGroup.java @@ -97,7 +97,7 @@ public class ViewGroup extends View implements ViewParent, ViewManager { // Reusing removeView in removeViewInLayout is not possible, because e.g. // ViewPager overrides removeView to call removeViewInLayout protected void removeViewInternal(View child) { - if (child.parent != this) + if (child == null || child.parent != this) return; child.parent = null; children.remove(child); diff --git a/src/api-impl/android/widget/PopupMenu.java b/src/api-impl/android/widget/PopupMenu.java index f313515e..0cfad00f 100644 --- a/src/api-impl/android/widget/PopupMenu.java +++ b/src/api-impl/android/widget/PopupMenu.java @@ -539,6 +539,12 @@ public class PopupMenu { // TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'getTitle'"); } + + @Override + public MenuItem setNumericShortcut(char numericChar) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'setNumericShortcut'"); + } } } diff --git a/src/api-impl/android/widget/Spinner.java b/src/api-impl/android/widget/Spinner.java index 6489921f..ca13afa4 100644 --- a/src/api-impl/android/widget/Spinner.java +++ b/src/api-impl/android/widget/Spinner.java @@ -5,7 +5,7 @@ import android.database.DataSetObserver; import android.util.AttributeSet; public class Spinner extends AbsSpinner { - private Observer observer = new Observer(); + private Observer observer; public Spinner(Context context) { super(context); @@ -27,6 +27,8 @@ public class Spinner extends AbsSpinner { protected native void native_setAdapter(long widget, SpinnerAdapter adapter); public void setAdapter(SpinnerAdapter adapter) { + if (observer == null) + observer = new Observer(); SpinnerAdapter oldAdapter = getAdapter(); if (oldAdapter != null) oldAdapter.unregisterDataSetObserver(observer);