Re: [android-developers] Re: What do these errors mean (using Eclipse)?

2012-02-02 Thread Kostya Vasilyev

On 02/03/2012 02:34 AM, atcal wrote:

Kostya,

Thanks for all this. I will follow up the links because I'm sure they
will be useful for my next step.


You're wellcome.



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


Ok, my apologies if I was wrong.

-- Kostya

--
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


Re: [android-developers] Re: What do these errors mean (using Eclipse)?

2012-02-02 Thread Kostya Vasilyev

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 
(Context 
context) 


Simple constructor to use when creating a view from code.
	View 
(Context 
context,AttributeSet 
attrs) 


Constructor that is called when inflating a view from XML.
	View 
(Context 
context,AttributeSet 
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/java/android/view/View.java#L3127

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

--
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

Re: [android-developers] Re: What do these errors mean (using Eclipse)?

2012-02-02 Thread Mark Murphy
On Thu, Feb 2, 2012 at 8:27 AM, atcal  wrote:
> OK. So why is the documentation so misleading?

It is not misleading. It is following the same JavaDocs structure that
has been used for a decade-plus for Java development. It is understood
by hundreds of thousands of Java developers, including tens of
thousands of Android developers.

> View() is shown as a
> public method in teh android documentation.

No, it is not. It is listed in the "Public Constructors" section, not
the "Public Methods" section.

> Are you seriously telling me that the explanation for this
> is that I don't understand Java inheritance?

It would appear that you do not understand Java programming. I suggest
that you spend time, outside of Android, learning Java programming,
before returning to Android development. Here is a blog post of mine
from a ways back outlining the key Java language bits that an Android
developer would need to be comfortable with:

http://commonsware.com/blog/2010/08/02/java-good-parts-version.html

> (  super(context) passes the compiler but then crashes out at run
> time.

Use adb logcat, DDMS, or the DDMS perspective in Eclipse to examine
LogCat and look at the stack trace associated with your crash.

-- 
Mark Murphy (a Commons Guy)
http://commonsware.com | http://github.com/commonsguy
http://commonsware.com/blog | http://twitter.com/commonsguy

_The Busy Coder's Guide to *Advanced* Android Development_ Version 2.4
Available!

-- 
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


Re: [android-developers] Re: What do these errors mean (using Eclipse)?

2012-02-02 Thread Kostya Vasilyev

It's not an Android issue.

It's not even a Java issue.

The issue is: trying to use C++ syntax in Java.

Inheritance is one of the things where Java is not quite the same as C++ 
(putting it mildly) - and the syntax differs too.


I'd recommend spending a couple hours on a Java crash course, they can 
be easily found with Google Search.


-- Kostya

02.02.2012 12:27, atcal пишет:

my problems with it as an Android issue, not a
Java issue


--
Kostya Vasilyev

--
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


Re: [android-developers] Re: What do these errors mean (using Eclipse)?

2012-02-01 Thread Ted Scott

On 2/1/2012 11:01 AM, atcal wrote:

On Feb 1, 4:25 pm, Ted Scott  wrote:

On 2/1/2012 4:11 AM, atcal wrote:






I'm trying to define my own View subclass.
public class myView extends View {
  myView(Context context) {
  View(context);
  }
}
Eclipse flags the first line of my constructor with an error "Implicit
super conctructor View() is undefined. Must explicitly invoke another
constructor" and the second line is flagged with the error "The method
View(Context context) is undefined for the type myView."
What does all this mean? The android documentation shows the
constructor View(Context context) as public. Why can't I use it?

There are several reasons why View() is not available and will never be
available.

It means you don't understand class instantiation and the life cycle of
a class. This is not an Android issue at all and I suggest that you
spend some time learning Java fundamentals. These folks are generally
pretty helpful with thathttp://www.javaranch.com/- Hide quoted text -

- Show quoted text -

Ted,

Thanks. You are probably right. While I have 10 yrs experience of C++
with Windows and Java looks deceptively similar, things like this are
tripping me up. I do understand about classes and instantiating
objects but obviously not the peculiarities of Java. I've tried to
register at javaranch but the website is not fast at sending back the
registration activation email. I'll have to learn to be patient.

I meant that they have tutorials and stuff. Since you have the syntax  
etc from c++ then maybe the O'Riely book Java in a Nutshell would be 
helpful. Oh, and you can forget the evil multiple inheritance and 
pointer stuff. ;)


Probably a little tedious for you, but there is this: 
http://docs.oracle.com/javase/tutorial/java/javaOO/index.html which 
lacks a bit of detail as to why, but does cover the how of fundamentals.




--
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