On Feb 2, 3:41 pm, Kostya Vasilyev <kmans...@gmail.com> wrote: > On 02/02/2012 05:27 PM, atcal wrote: > > > OK. So why is the documentation so misleading? View() is shown as a > > public method in teh android documentation. > > Not for me: > > http://developer.android.com/reference/android/view/View.html > > Public Constructors > View > <http://developer.android.com/reference/android/view/View.html#View%28...>(Context > <http://developer.android.com/reference/android/content/Context.html>context) > > Simple constructor to use when creating a view from code. > View > <http://developer.android.com/reference/android/view/View.html#View%28...>(Context > <http://developer.android.com/reference/android/content/Context.html>context,AttributeSet > <http://developer.android.com/reference/android/util/AttributeSet.html>attrs) > > Constructor that is called when inflating a view from XML. > View > <http://developer.android.com/reference/android/view/View.html#View%28...>(Context > <http://developer.android.com/reference/android/content/Context.html>context,AttributeSet > <http://developer.android.com/reference/android/util/AttributeSet.html>attrs, > int defStyle) > Perform inflation from XML and apply a class-specific base style. > > I don't see an argument-less View() here. > > There is an argument-less constructor in the source: > > https://github.com/android/platform_frameworks_base/blob/master/core/... > > but it's access level is package, not public or protected, so > application code won't be able to use it. > > > Why is it not available to > > a subclass? Are you seriously telling me that the explanation for this > > is that I don't understand Java inheritance? > > I'm seriously telling you that the snippet in your original email looked > like you used C++ constructor syntax, or something similar, and not Java > syntax. > > > > > ( super(context) passes the compiler but then crashes out at run > > time. > > If you're trying to create a custom view, please refer to this: > > http://developer.android.com/guide/topics/ui/custom-components.html > > In particular, it says: > > There is a form of the constructor that are called when the view is > created from code and a form that is called when the view is inflated > from a layout file. The second form should parse and apply any > attributes defined in the layout file. > > The former is YourView(Context), the latter is YourView(Context, > AttributeSet) > > > Can anyone tell me the statement(s) I need to put in rather than > > refer me to a crash course. > > The link above should be a good start. > > > I've already spent several hours reading > > the Oracle java course, so unless you have a specific course and > > chapter in mind the suggestion isn't very helpful. ) > > I'll just put it here then: > > The syntax for calling the base class constructor from a derived class > constructor, in Java, is: > > class Derived extends Base { > > public Derived(.. args here...) > { > super(... args here....); > } > > } > > and not: > > class Derived extends Base { > > public Derived(.. args here...) > { > Base(... args here....); > } > > } > > or: > > class Derived extends Base { > > public Derived(.. args here...) : Base (... args here... ) > { > } > > } > > Why is this? Java doesn't have MI like C++, so it's not necessary to > explicitly specify which of the base classes you're referring to - just > "super" is unambiguous. > > And actually, in C++, your original code snippet would be creating a > temporary View object on the stack, rather than initializing the base class. > > -- Kostya
Kostya, Thanks for all this. I will follow up the links because I'm sure they will be useful for my next step. Just to put the record straight, I've resolved the problem I was having and it was nothing to do with a misunderstanding of Java - it was an android issue. My view subclass was being used in an activity subclass and the class loader was failing when my activity class tried to instantiate the view. When I added the activity to the xml manifest that error went away. I hadn't previously edited the manifest because I did not expect to "intent" the activity to create a separate thread at this stage of development and testing, but obviously that was a mistake. An android mistake. -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en