And if it's a top-level class, the static is indeed unnecessary. But the class="" attribute in XML should not have a $ anywhere in hte value.
On Fri, Apr 24, 2009 at 5:11 AM, Romain Guy <[email protected]> wrote: > It HAS to be a static class to be internal and publicly accessible. > The problem is that it does not provide the right constructor. > > It looks like the class is not an internal class but declared in XML > as an internal class. > > On Wed, Apr 22, 2009 at 9:25 AM, Mark Murphy <[email protected]> wrote: >> >> Pierpa wrote: >>> Hello, I am new to android programming...so please be patient.. >>> >>> I am trying to load a custom view (TracciaView) into an activity >>> (Activitygps), where my custom view in defined as a subclass of an >>> activty class. I created the following xml layout file for the >>> activity containing the custom view: >>> >>> ---- >>> <?xml version="1.0" encoding="utf-8"?> >>> <view xmlns:android="http://schemas.android.com/apk/res/android" >>> >>> class="com.example.android.prova.Activitygps$TracciaView" >>> android:id="@+id/TracciaV" >>> android:layout_width="fill_parent" >>> android:layout_height="fill_parent" >>> /> >>> ---- >>> this is the subclass TracciaView: >>> >>> public static class TracciaView extends View { >>> >>> private ShapeDrawable mDrawable; >>> >>> public TracciaView(Context context) { >>> super(context); >>> >>> int x = 10; >>> int y = 10; >>> int width = 300; >>> int height = 200; >>> >>> mDrawable = new ShapeDrawable(new OvalShape()); >>> mDrawable.getPaint().setColor(0xff74AC23); >>> mDrawable.setBounds(x, y, x + width, y + height); >>> >>> >>> } >>> �...@override protected void onDraw(Canvas canvas) { >>> >>> mDrawable.draw(canvas); >>> super.onDraw(canvas); >>> } >>> >>> } >>> >>> >>> What happens is I am keeping on getting runtime error (the app dies), >>> looking in the LogCat I get: >>> >>> I/ActivityManager( 53): Starting activity: Intent { comp= >>> {com1.example.android.prova/com1.example.android.prova.Activitygps} } >>> D/AndroidRuntime( 164): Shutting down VM >>> W/dalvikvm( 164): threadid=3: thread exiting with uncaught exception >>> (group=0x4000fe68) >>> E/AndroidRuntime( 164): Uncaught handler: thread main exiting due to >>> uncaught exception >>> E/AndroidRuntime( 164): java.lang.RuntimeException: Unable to start >>> activity ComponentInfo{com1.example.android.prova/ >>> com1.example.android.prova.Activitygps}: >>> android.view.InflateException: Binary XML file line #2: Error >>> inflating class com.example.android.prova.Activitygps$TracciaView >>> E/AndroidRuntime( 164): at >>> android.app.ActivityThread.performLaunchActivity(ActivityThread.java: >>> 2141) >>> E/AndroidRuntime( 164): at >>> android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: >>> 2157) >>> E/AndroidRuntime( 164): at android.app.ActivityThread.access$1800 >>> (ActivityThread.java:112) >>> E/AndroidRuntime( 164): at android.app.ActivityThread$H.handleMessage >>> (ActivityThread.java:1581) >>> E/AndroidRuntime( 164): at android.os.Handler.dispatchMessage >>> (Handler.java:88) >>> E/AndroidRuntime( 164): at android.os.Looper.loop(Looper.java:123) >>> E/AndroidRuntime( 164): at android.app.ActivityThread.main >>> (ActivityThread.java:3739) >>> E/AndroidRuntime( 164): at java.lang.reflect.Method.invokeNative >>> (Native Method) >>> E/AndroidRuntime( 164): at java.lang.reflect.Method.invoke >>> (Method.java:515) >>> E/AndroidRuntime( 164): at com.android.internal.os.ZygoteInit >>> $MethodAndArgsCaller.run(ZygoteInit.java:739) >>> E/AndroidRuntime( 164): at com.android.internal.os.ZygoteInit.main >>> (ZygoteInit.java:497) >>> E/AndroidRuntime( 164): at dalvik.system.NativeStart.main(Native >>> Method) >>> E/AndroidRuntime( 164): Caused by: android.view.InflateException: >>> Binary XML file line #2: Error inflating class >>> com.example.android.prova.Activitygps$TracciaView >>> E/AndroidRuntime( 164): at >>> android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:575) >>> E/AndroidRuntime( 164): at android.view.LayoutInflater.inflate >>> (LayoutInflater.java:385) >>> E/AndroidRuntime( 164): at android.view.LayoutInflater.inflate >>> (LayoutInflater.java:320) >>> E/AndroidRuntime( 164): at android.view.LayoutInflater.inflate >>> (LayoutInflater.java:276) >>> E/AndroidRuntime( 164): at >>> com.android.internal.policy.impl.PhoneWindow.setContentView >>> (PhoneWindow.java:231) >>> E/AndroidRuntime( 164): at android.app.Activity.setContentView >>> (Activity.java:1567) >>> E/AndroidRuntime( 164): at >>> com1.example.android.prova.Activitygps.onCreate(Activitygps.java:60) >>> E/AndroidRuntime( 164): at >>> android.app.Instrumentation.callActivityOnCreate(Instrumentation.java: >>> 1122) >>> E/AndroidRuntime( 164): at >>> android.app.ActivityThread.performLaunchActivity(ActivityThread.java: >>> 2104) >>> E/AndroidRuntime( 164): ... 11 more >>> E/AndroidRuntime( 164): Caused by: java.lang.ClassNotFoundException: >>> com.example.android.prova.Activitygps$TracciaView in loader >>> dalvik.system.pathclassloa...@4339c200 >>> E/AndroidRuntime( 164): at dalvik.system.PathClassLoader.findClass >>> (PathClassLoader.java:215) >>> E/AndroidRuntime( 164): at java.lang.ClassLoader.loadClass >>> (ClassLoader.java:453) >>> E/AndroidRuntime( 164): at java.lang.ClassLoader.loadClass >>> (ClassLoader.java:421) >>> E/AndroidRuntime( 164): at android.view.LayoutInflater.createView >>> (LayoutInflater.java:465) >>> E/AndroidRuntime( 164): at >>> android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:564) >>> E/AndroidRuntime( 164): ... 19 more >>> I/Process ( 53): Sending signal. PID: 164 SIG: 3 >>> I/dalvikvm( 164): threadid=7: reacting to signal 3 >>> I/dalvikvm( 164): Wrote stack trace to '/data/anr/traces.txt' >>> I/ARMAssembler( 53): generated >>> scanline__00000077:03515104_00000000_00000000 [ 27 ipp] (41 ins) at >>> [0x26cfd8:0x26d07c] in 1686764 ns >>> >>> >>> >>> I lost almost two days trying to figure out what's wrong ... >>> >>> Any help/hint will be very much appreciated... >> >> Try not making it a static class and see if that helps. >> >> -- >> Mark Murphy (a Commons Guy) >> http://commonsware.com | http://twitter.com/commonsguy >> >> _The Busy Coder's Guide to Android Development_ Version 2.0 Available! >> >> >> >> > > > > -- > Romain Guy > Android framework engineer > [email protected] > > Note: please don't send private questions to me, as I don't have time > to provide private support. All such questions should be posted on > public forums, where I and others can see and answer them > -- Romain Guy Android framework engineer [email protected] Note: please don't send private questions to me, as I don't have time to provide private support. All such questions should be posted on public forums, where I and others can see and answer them --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Beginners" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-beginners?hl=en -~----------~----~----~----~------~----~------~--~---

