add missing Context attribute to all View constructors

This commit is contained in:
Julian Winkler
2023-07-14 18:02:04 +02:00
parent 151eb334cc
commit 6b79adb2c3
12 changed files with 46 additions and 26 deletions

View File

@@ -35,12 +35,12 @@ public class LayoutInflater {
public final View createView(String name, String prefix, AttributeSet attrs) throws Exception {
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>> createView(" + name + ", " + prefix + ", " + attrs + ");");
String view_class_name = prefix + name;
String view_class_name = prefix!=null ? prefix + name : name;
Class view_class = Class.forName(view_class_name);
Constructor constructor = view_class.getConstructor(AttributeSet.class);
Constructor constructor = view_class.getConstructor(Context.class, AttributeSet.class);
View view_instance = (View)constructor.newInstance(attrs);
View view_instance = (View)constructor.newInstance(Context.this_application, attrs);
return view_instance;
}

View File

@@ -688,11 +688,14 @@ public class View extends Object {
public View() {} // FIXME
public View(AttributeSet attrs) {
id = attrs.getAttributeResourceValue("http://schemas.android.com/apk/res/android", "id", 0);
public View(Context context, AttributeSet attrs) {
this(context);
if (id != 0)
view_by_id.put(id, this);
if (attrs != null) {
id = attrs.getAttributeResourceValue("http://schemas.android.com/apk/res/android", "id", 0);
if (id != 0)
setId(id);
}
}
public View findViewById(int id) {
@@ -766,7 +769,9 @@ public class View extends Object {
System.out.println("setContentDescription called with: >" + contentDescription + "<");
}
public void setId(int id) {}
public void setId(int id) {
view_by_id.put(id, this);
}
public void setOnKeyListener(OnKeyListener l) {}

View File

@@ -18,8 +18,14 @@ public class ViewGroup extends View implements ViewParent, ViewManager {
children = new ArrayList<View>();
}
public ViewGroup(AttributeSet attrs) {
super(attrs);
public ViewGroup(Context context, AttributeSet attrs) {
super(context, attrs);
children = new ArrayList<View>();
}
public ViewGroup(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs);
children = new ArrayList<View>();
}