[android-developers] Re: Question about parcelable object

2010-07-06 Thread jul
Thanks again Kostya.

I don't understand why my List of Restaurant objects is a LinkedList,
since I define it as
   private ListRestaurant restaurants = new
ArrayListRestaurant();
in my RestaurantList class...

Anyway, I tried your fix, but I'm still messed with types:

-first, I had to cast restaurantList.getRestaurants().toArray() to
(Restaurant[]), because it returns an Object[]:

Restaurant[] restArray =
(Restaurant[])restaurantList.getRestaurants().toArray();
outState.putParcelableArray(restoList,restArray);

-and even with that, I get an error when executing putParcelableArray:

07-06 16:09:30.066: ERROR/AndroidRuntime(930):
java.lang.RuntimeException: Unable to pause activity
{org.digitalfarm.atable/org.digitalfarm.atable.Atable}:
java.lang.ClassCastException: [Ljava.lang.Object;
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.ActivityThread.performPauseActivity(ActivityThread.java:
2840)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.ActivityThread.performPauseActivity(ActivityThread.java:
2797)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.ActivityThread.handlePauseActivity(ActivityThread.java:
2780)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.ActivityThread.access$2000(ActivityThread.java:112)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1699)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.os.Handler.dispatchMessage(Handler.java:99)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.os.Looper.loop(Looper.java:123)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.ActivityThread.main(ActivityThread.java:3948)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
java.lang.reflect.Method.invokeNative(Native Method)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
java.lang.reflect.Method.invoke(Method.java:521)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
com.android.internal.os.ZygoteInit
$MethodAndArgsCaller.run(ZygoteInit.java:782)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
dalvik.system.NativeStart.main(Native Method)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): Caused by:
java.lang.ClassCastException: [Ljava.lang.Object;
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
org.digitalfarm.atable.Atable.onSaveInstanceState(Atable.java:254)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.Activity.performSaveInstanceState(Activity.java:1008)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:
1256)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.ActivityThread.performPauseActivity(ActivityThread.java:
2822)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): ... 12 more


Julien

On Jul 5, 10:17 pm, Kostya Vasilyev kmans...@gmail.com wrote:
 Jul,

 This is the heart of the problem in logcat:

 07-05 19:34:28.647: ERROR/AndroidRuntime(808): Caused by:
 java.lang.ClassCastException: java.util.LinkedList
 07-05 19:34:28.647: ERROR/AndroidRuntime(808):     at
 org.digitalfarm.atable.Atable.onSaveInstanceState(Atable.java:254)

 My guess is that

 gson.fromJson

 creates a LinkedListRestaurant, then it blows at line Atable.java:254.

 I am guessing it's the line saying:

 outState.putParcelableArrayList(restoList,
 (ArrayListRestaurant)restaurantList.getRestaurants());

 and the immediate cause is the cast from LinkedListRestaurant to
 ArrayListRestaurant, which are unrelated classes.

 To fix this, you can change the above code to read:

     Restaurant[] restArray = restaurantList.getRestaurants().toArray();
     outState.putParcelableArray(restoList,restArray);

 -- Kostya

 05.07.2010 21:42, jul пишет:



  Is it the right way to do it? The writeToParcel method of my
  Restaurant object is never called...

  The error seems to be in

       outState.putParcelableArrayList(restoList,
  (ArrayListRestaurant)restaurantList.getRestaurants());

  and I get in my LogCat:

  07-05 19:34:13.846: WARN/ActivityManager(563): Activity pause timeout
  for HistoryRecord{436950f8 {org.digitalfarm.atable/
  org.digitalfarm.atable.Atable}}
  07-05 19:34:28.336: DEBUG/AndroidRuntime(808): Shutting down VM
  07-05 19:34:28.336: WARN/dalvikvm(808): threadid=3: thread exiting
  with uncaught exception (group=0x4000fe70)
  07-05 19:34:28.336: ERROR/AndroidRuntime(808): Uncaught handler:
  thread main exiting due to uncaught exception
  07-05 19:34:28.637: DEBUG/dalvikvm(808): GC freed 3337 objects /
  259288 bytes in 94ms
  07-05 19:34:28.647: ERROR/AndroidRuntime(808):
  java.lang.RuntimeException: Unable to pause activity
  {org.digitalfarm.atable/org.digitalfarm.atable.Atable}:
  java.lang.ClassCastException: java.util.LinkedList
  07-05 19:34:28.647: 

Re: [android-developers] Re: Question about parcelable object

2010-07-06 Thread Kostya Vasilyev

Jul,

What is the code around line 254 in Atable.java?

07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
org.digitalfarm.atable.Atable.onSaveInstanceState(Atable.java:254)


And, what does restaurantList.getRestaurants() really return, when 
called from  onSaveInstanceState ?


-- Kostya

06.07.2010 18:19, jul пишет:

Thanks again Kostya.

I don't understand why my List of Restaurant objects is a LinkedList,
since I define it as
private ListRestaurant  restaurants = new
ArrayListRestaurant();
in my RestaurantList class...

Anyway, I tried your fix, but I'm still messed with types:

-first, I had to cast restaurantList.getRestaurants().toArray() to
(Restaurant[]), because it returns an Object[]:

 Restaurant[] restArray =
(Restaurant[])restaurantList.getRestaurants().toArray();
 outState.putParcelableArray(restoList,restArray);

-and even with that, I get an error when executing putParcelableArray:

07-06 16:09:30.066: ERROR/AndroidRuntime(930):
java.lang.RuntimeException: Unable to pause activity
{org.digitalfarm.atable/org.digitalfarm.atable.Atable}:
java.lang.ClassCastException: [Ljava.lang.Object;
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.ActivityThread.performPauseActivity(ActivityThread.java:
2840)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.ActivityThread.performPauseActivity(ActivityThread.java:
2797)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.ActivityThread.handlePauseActivity(ActivityThread.java:
2780)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.ActivityThread.access$2000(ActivityThread.java:112)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1699)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.os.Handler.dispatchMessage(Handler.java:99)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.os.Looper.loop(Looper.java:123)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.ActivityThread.main(ActivityThread.java:3948)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
java.lang.reflect.Method.invokeNative(Native Method)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
java.lang.reflect.Method.invoke(Method.java:521)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
com.android.internal.os.ZygoteInit
$MethodAndArgsCaller.run(ZygoteInit.java:782)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
dalvik.system.NativeStart.main(Native Method)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): Caused by:
java.lang.ClassCastException: [Ljava.lang.Object;
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
org.digitalfarm.atable.Atable.onSaveInstanceState(Atable.java:254)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.Activity.performSaveInstanceState(Activity.java:1008)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:
1256)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.ActivityThread.performPauseActivity(ActivityThread.java:
2822)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): ... 12 more


Julien

On Jul 5, 10:17 pm, Kostya Vasilyevkmans...@gmail.com  wrote:
   

Jul,

This is the heart of the problem in logcat:

07-05 19:34:28.647: ERROR/AndroidRuntime(808): Caused by:
java.lang.ClassCastException: java.util.LinkedList
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
org.digitalfarm.atable.Atable.onSaveInstanceState(Atable.java:254)

My guess is that

gson.fromJson

creates a LinkedListRestaurant, then it blows at line Atable.java:254.

I am guessing it's the line saying:

outState.putParcelableArrayList(restoList,
(ArrayListRestaurant)restaurantList.getRestaurants());

and the immediate cause is the cast from LinkedListRestaurant  to
ArrayListRestaurant, which are unrelated classes.

To fix this, you can change the above code to read:

 Restaurant[] restArray = restaurantList.getRestaurants().toArray();
 outState.putParcelableArray(restoList,restArray);

-- Kostya

05.07.2010 21:42, jul пишет:



 

Is it the right way to do it? The writeToParcel method of my
Restaurant object is never called...
   
 

The error seems to be in
   
 

  outState.putParcelableArrayList(restoList,
(ArrayListRestaurant)restaurantList.getRestaurants());
   
 

and I get in my LogCat:
   
 

07-05 19:34:13.846: WARN/ActivityManager(563): Activity pause timeout
for HistoryRecord{436950f8 {org.digitalfarm.atable/
org.digitalfarm.atable.Atable}}
07-05 19:34:28.336: DEBUG/AndroidRuntime(808): Shutting down VM
07-05 19:34:28.336: WARN/dalvikvm(808): threadid=3: thread exiting
with uncaught exception (group=0x4000fe70)
07-05 19:34:28.336: ERROR/AndroidRuntime(808): Uncaught handler:
thread main exiting due to 

[android-developers] Re: Question about parcelable object

2010-07-06 Thread jul
The type returned by restaurantList.getRestaurants() is LinkedList (I
still don't understand why. I expect ArrayList, as you can see in my
RestaurantList class definition in previous post).
It now works if I create an ArrayList from the LinkedList.

ArrayListRestaurant restArray = new
ArrayListRestaurant(restaurantList.getRestaurants());
outState.putParcelableArrayList(restoList, restArray);

I'm now going to investigate why gson creates a LinkedList instead of
an ArrayList...

Thanks again for your time, it helped a lot.

Julien


On Jul 6, 4:38 pm, Kostya Vasilyev kmans...@gmail.com wrote:
 Jul,

 What is the code around line 254 in Atable.java?

 07-06 16:09:30.066: ERROR/AndroidRuntime(930):     at
 org.digitalfarm.atable.Atable.onSaveInstanceState(Atable.java:254)

 And, what does restaurantList.getRestaurants() really return, when
 called from  onSaveInstanceState ?

 -- Kostya

 06.07.2010 18:19, jul пишет:

  Thanks again Kostya.

  I don't understand why my List of Restaurant objects is a LinkedList,
  since I define it as
      private ListRestaurant  restaurants = new
  ArrayListRestaurant();
  in my RestaurantList class...

  Anyway, I tried your fix, but I'm still messed with types:

  -first, I had to cast restaurantList.getRestaurants().toArray() to
  (Restaurant[]), because it returns an Object[]:

       Restaurant[] restArray =
  (Restaurant[])restaurantList.getRestaurants().toArray();
       outState.putParcelableArray(restoList,restArray);

  -and even with that, I get an error when executing putParcelableArray:

  07-06 16:09:30.066: ERROR/AndroidRuntime(930):
  java.lang.RuntimeException: Unable to pause activity
  {org.digitalfarm.atable/org.digitalfarm.atable.Atable}:
  java.lang.ClassCastException: [Ljava.lang.Object;
  07-06 16:09:30.066: ERROR/AndroidRuntime(930):     at
  android.app.ActivityThread.performPauseActivity(ActivityThread.java:
  2840)
  07-06 16:09:30.066: ERROR/AndroidRuntime(930):     at
  android.app.ActivityThread.performPauseActivity(ActivityThread.java:
  2797)
  07-06 16:09:30.066: ERROR/AndroidRuntime(930):     at
  android.app.ActivityThread.handlePauseActivity(ActivityThread.java:
  2780)
  07-06 16:09:30.066: ERROR/AndroidRuntime(930):     at
  android.app.ActivityThread.access$2000(ActivityThread.java:112)
  07-06 16:09:30.066: ERROR/AndroidRuntime(930):     at
  android.app.ActivityThread$H.handleMessage(ActivityThread.java:1699)
  07-06 16:09:30.066: ERROR/AndroidRuntime(930):     at
  android.os.Handler.dispatchMessage(Handler.java:99)
  07-06 16:09:30.066: ERROR/AndroidRuntime(930):     at
  android.os.Looper.loop(Looper.java:123)
  07-06 16:09:30.066: ERROR/AndroidRuntime(930):     at
  android.app.ActivityThread.main(ActivityThread.java:3948)
  07-06 16:09:30.066: ERROR/AndroidRuntime(930):     at
  java.lang.reflect.Method.invokeNative(Native Method)
  07-06 16:09:30.066: ERROR/AndroidRuntime(930):     at
  java.lang.reflect.Method.invoke(Method.java:521)
  07-06 16:09:30.066: ERROR/AndroidRuntime(930):     at
  com.android.internal.os.ZygoteInit
  $MethodAndArgsCaller.run(ZygoteInit.java:782)
  07-06 16:09:30.066: ERROR/AndroidRuntime(930):     at
  com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
  07-06 16:09:30.066: ERROR/AndroidRuntime(930):     at
  dalvik.system.NativeStart.main(Native Method)
  07-06 16:09:30.066: ERROR/AndroidRuntime(930): Caused by:
  java.lang.ClassCastException: [Ljava.lang.Object;
  07-06 16:09:30.066: ERROR/AndroidRuntime(930):     at
  org.digitalfarm.atable.Atable.onSaveInstanceState(Atable.java:254)
  07-06 16:09:30.066: ERROR/AndroidRuntime(930):     at
  android.app.Activity.performSaveInstanceState(Activity.java:1008)
  07-06 16:09:30.066: ERROR/AndroidRuntime(930):     at
  android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:
  1256)
  07-06 16:09:30.066: ERROR/AndroidRuntime(930):     at
  android.app.ActivityThread.performPauseActivity(ActivityThread.java:
  2822)
  07-06 16:09:30.066: ERROR/AndroidRuntime(930):     ... 12 more

  Julien

  On Jul 5, 10:17 pm, Kostya Vasilyevkmans...@gmail.com  wrote:

  Jul,

  This is the heart of the problem in logcat:

  07-05 19:34:28.647: ERROR/AndroidRuntime(808): Caused by:
  java.lang.ClassCastException: java.util.LinkedList
  07-05 19:34:28.647: ERROR/AndroidRuntime(808):     at
  org.digitalfarm.atable.Atable.onSaveInstanceState(Atable.java:254)

  My guess is that

  gson.fromJson

  creates a LinkedListRestaurant, then it blows at line Atable.java:254.

  I am guessing it's the line saying:

  outState.putParcelableArrayList(restoList,
  (ArrayListRestaurant)restaurantList.getRestaurants());

  and the immediate cause is the cast from LinkedListRestaurant  to
  ArrayListRestaurant, which are unrelated classes.

  To fix this, you can change the above code to read:

       Restaurant[] restArray = restaurantList.getRestaurants().toArray();
       outState.putParcelableArray(restoList,restArray);

  -- Kostya

  

Re: [android-developers] Re: Question about parcelable object

2010-07-06 Thread Kostya Vasilyev

Jul,

The definition in your class only says that the restaurant list is a 
ListRestaurant.


List is an interface:

http://java.sun.com/j2se/1.4.2/docs/api/java/util/List.html

Actual implementations are, among others, ArrayList and LinkedList. The 
only thing they have in common is that they both implement the same 
interface: List.


You can assign any actual implementation in one place (in RestaurantList 
field initializer), but it doesn't mean that all other places 
automagically use the same actual implementation, they are free to use 
any other, as long as it's a ListRestaurant


And it appears that gson.fromJson does exactly that - returns a 
ListRestaurant, which is actually a LinkListRestaurant.


-- Kostya

06.07.2010 19:11, jul пишет:

The type returned by restaurantList.getRestaurants() is LinkedList (I
still don't understand why. I expect ArrayList, as you can see in my
RestaurantList class definition in previous post).
It now works if I create an ArrayList from the LinkedList.

 ArrayListRestaurant  restArray = new
ArrayListRestaurant(restaurantList.getRestaurants());
 outState.putParcelableArrayList(restoList, restArray);

I'm now going to investigate why gson creates a LinkedList instead of
an ArrayList...

Thanks again for your time, it helped a lot.

Julien


On Jul 6, 4:38 pm, Kostya Vasilyevkmans...@gmail.com  wrote:
   

Jul,

What is the code around line 254 in Atable.java?

07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
org.digitalfarm.atable.Atable.onSaveInstanceState(Atable.java:254)

And, what does restaurantList.getRestaurants() really return, when
called from  onSaveInstanceState ?

-- Kostya

06.07.2010 18:19, jul пишет:

 

Thanks again Kostya.
   
 

I don't understand why my List of Restaurant objects is a LinkedList,
since I define it as
 private ListRestaurantrestaurants = new
ArrayListRestaurant();
in my RestaurantList class...
   
 

Anyway, I tried your fix, but I'm still messed with types:
   
 

-first, I had to cast restaurantList.getRestaurants().toArray() to
(Restaurant[]), because it returns an Object[]:
   
 

  Restaurant[] restArray =
(Restaurant[])restaurantList.getRestaurants().toArray();
  outState.putParcelableArray(restoList,restArray);
   
 

-and even with that, I get an error when executing putParcelableArray:
   
 

07-06 16:09:30.066: ERROR/AndroidRuntime(930):
java.lang.RuntimeException: Unable to pause activity
{org.digitalfarm.atable/org.digitalfarm.atable.Atable}:
java.lang.ClassCastException: [Ljava.lang.Object;
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.ActivityThread.performPauseActivity(ActivityThread.java:
2840)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.ActivityThread.performPauseActivity(ActivityThread.java:
2797)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.ActivityThread.handlePauseActivity(ActivityThread.java:
2780)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.ActivityThread.access$2000(ActivityThread.java:112)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1699)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.os.Handler.dispatchMessage(Handler.java:99)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.os.Looper.loop(Looper.java:123)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.ActivityThread.main(ActivityThread.java:3948)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
java.lang.reflect.Method.invokeNative(Native Method)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
java.lang.reflect.Method.invoke(Method.java:521)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
com.android.internal.os.ZygoteInit
$MethodAndArgsCaller.run(ZygoteInit.java:782)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
dalvik.system.NativeStart.main(Native Method)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): Caused by:
java.lang.ClassCastException: [Ljava.lang.Object;
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
org.digitalfarm.atable.Atable.onSaveInstanceState(Atable.java:254)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.Activity.performSaveInstanceState(Activity.java:1008)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:
1256)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): at
android.app.ActivityThread.performPauseActivity(ActivityThread.java:
2822)
07-06 16:09:30.066: ERROR/AndroidRuntime(930): ... 12 more
   
 

Julien
   
 

On Jul 5, 10:17 pm, Kostya Vasilyevkmans...@gmail.comwrote:
   
 

Jul,
 
 

This is the heart of the problem in logcat:
 
 

07-05 

[android-developers] Re: Question about parcelable object

2010-07-05 Thread jul
Is it the right way to do it? The writeToParcel method of my
Restaurant object is never called...

The error seems to be in

outState.putParcelableArrayList(restoList,
(ArrayListRestaurant)restaurantList.getRestaurants());

and I get in my LogCat:

07-05 19:34:13.846: WARN/ActivityManager(563): Activity pause timeout
for HistoryRecord{436950f8 {org.digitalfarm.atable/
org.digitalfarm.atable.Atable}}
07-05 19:34:28.336: DEBUG/AndroidRuntime(808): Shutting down VM
07-05 19:34:28.336: WARN/dalvikvm(808): threadid=3: thread exiting
with uncaught exception (group=0x4000fe70)
07-05 19:34:28.336: ERROR/AndroidRuntime(808): Uncaught handler:
thread main exiting due to uncaught exception
07-05 19:34:28.637: DEBUG/dalvikvm(808): GC freed 3337 objects /
259288 bytes in 94ms
07-05 19:34:28.647: ERROR/AndroidRuntime(808):
java.lang.RuntimeException: Unable to pause activity
{org.digitalfarm.atable/org.digitalfarm.atable.Atable}:
java.lang.ClassCastException: java.util.LinkedList
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
android.app.ActivityThread.performPauseActivity(ActivityThread.java:
2840)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
android.app.ActivityThread.performPauseActivity(ActivityThread.java:
2797)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
android.app.ActivityThread.handlePauseActivity(ActivityThread.java:
2780)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
android.app.ActivityThread.access$2000(ActivityThread.java:112)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1699)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
android.os.Handler.dispatchMessage(Handler.java:99)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
android.os.Looper.loop(Looper.java:123)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
android.app.ActivityThread.main(ActivityThread.java:3948)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
java.lang.reflect.Method.invokeNative(Native Method)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
java.lang.reflect.Method.invoke(Method.java:521)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
com.android.internal.os.ZygoteInit
$MethodAndArgsCaller.run(ZygoteInit.java:782)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
dalvik.system.NativeStart.main(Native Method)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): Caused by:
java.lang.ClassCastException: java.util.LinkedList
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
org.digitalfarm.atable.Atable.onSaveInstanceState(Atable.java:254)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
android.app.Activity.performSaveInstanceState(Activity.java:1008)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:
1256)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
android.app.ActivityThread.performPauseActivity(ActivityThread.java:
2822)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): ... 12 more

thanks for your help

On Jul 5, 6:31 pm, Kostya Vasilyev kmans...@gmail.com wrote:
 Jul,

 Parcelable implementation looks good, except for the questionable cast
 to ArrayListRestaurant, but that shouldn't have any effect.

 What error are you getting, exactly?

 -- Kostya

 05.07.2010 20:20, jul пишет:



  Hi,

  I want to save a list of Parcelable Restaurant objects on
  onSaveInstanceState. I created a Restaurant class extending Parcelable
  and a RestaurantList object, both shown below. In my main activity I
  fill my RestauranList directly from json internet data using GSON:

       restaurantList = gson.fromJson(r, RestaurantList.class);

  Now, when I want to save the List of Restaurant objects using

       protected void onSaveInstanceState(Bundle outState) {

           if (restaurantList != null ) {
               outState.putParcelableArrayList(restoList,
  (ArrayListRestaurant)restaurantList.getRestaurants());
          }

           super.onSaveInstanceState(outState);
       }

  I get an error, I guess because Parcelable data are not written. How
  should I do it? Do I have to create an array of Parcel objects in my
  main activity and fill it by calling writeToParcel for each of the
  Restaurant objects?

  thanks for any suggestion

  Julien

  **RestaurantList
  class**

  public class RestaurantList {

       private ListRestaurant  restaurants = new
  ArrayListRestaurant();

       public int getSize() {
           return restaurants.size();
       }

       public ListRestaurant  getRestaurants() {
           return this.restaurants;
       }

       public Restaurant getRestaurant(int i) {
           return this.restaurants.get(i);
       }

       public void setRestaurants(ListRestaurant  restaurants) {
           

Re: [android-developers] Re: Question about parcelable object

2010-07-05 Thread Kostya Vasilyev

Jul,

This is the heart of the problem in logcat:

07-05 19:34:28.647: ERROR/AndroidRuntime(808): Caused by:
java.lang.ClassCastException: java.util.LinkedList
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
org.digitalfarm.atable.Atable.onSaveInstanceState(Atable.java:254)

My guess is that

gson.fromJson

creates a LinkedListRestaurant, then it blows at line Atable.java:254.

I am guessing it's the line saying:

outState.putParcelableArrayList(restoList,
(ArrayListRestaurant)restaurantList.getRestaurants());


and the immediate cause is the cast from LinkedListRestaurant to 
ArrayListRestaurant, which are unrelated classes.


To fix this, you can change the above code to read:

   Restaurant[] restArray = restaurantList.getRestaurants().toArray();
   outState.putParcelableArray(restoList,restArray);


-- Kostya

05.07.2010 21:42, jul пишет:

Is it the right way to do it? The writeToParcel method of my
Restaurant object is never called...

The error seems to be in

 outState.putParcelableArrayList(restoList,
(ArrayListRestaurant)restaurantList.getRestaurants());

and I get in my LogCat:

07-05 19:34:13.846: WARN/ActivityManager(563): Activity pause timeout
for HistoryRecord{436950f8 {org.digitalfarm.atable/
org.digitalfarm.atable.Atable}}
07-05 19:34:28.336: DEBUG/AndroidRuntime(808): Shutting down VM
07-05 19:34:28.336: WARN/dalvikvm(808): threadid=3: thread exiting
with uncaught exception (group=0x4000fe70)
07-05 19:34:28.336: ERROR/AndroidRuntime(808): Uncaught handler:
thread main exiting due to uncaught exception
07-05 19:34:28.637: DEBUG/dalvikvm(808): GC freed 3337 objects /
259288 bytes in 94ms
07-05 19:34:28.647: ERROR/AndroidRuntime(808):
java.lang.RuntimeException: Unable to pause activity
{org.digitalfarm.atable/org.digitalfarm.atable.Atable}:
java.lang.ClassCastException: java.util.LinkedList
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
android.app.ActivityThread.performPauseActivity(ActivityThread.java:
2840)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
android.app.ActivityThread.performPauseActivity(ActivityThread.java:
2797)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
android.app.ActivityThread.handlePauseActivity(ActivityThread.java:
2780)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
android.app.ActivityThread.access$2000(ActivityThread.java:112)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1699)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
android.os.Handler.dispatchMessage(Handler.java:99)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
android.os.Looper.loop(Looper.java:123)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
android.app.ActivityThread.main(ActivityThread.java:3948)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
java.lang.reflect.Method.invokeNative(Native Method)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
java.lang.reflect.Method.invoke(Method.java:521)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
com.android.internal.os.ZygoteInit
$MethodAndArgsCaller.run(ZygoteInit.java:782)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
dalvik.system.NativeStart.main(Native Method)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): Caused by:
java.lang.ClassCastException: java.util.LinkedList
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
org.digitalfarm.atable.Atable.onSaveInstanceState(Atable.java:254)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
android.app.Activity.performSaveInstanceState(Activity.java:1008)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:
1256)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): at
android.app.ActivityThread.performPauseActivity(ActivityThread.java:
2822)
07-05 19:34:28.647: ERROR/AndroidRuntime(808): ... 12 more

thanks for your help

On Jul 5, 6:31 pm, Kostya Vasilyevkmans...@gmail.com  wrote:
   

Jul,

Parcelable implementation looks good, except for the questionable cast
to ArrayListRestaurant, but that shouldn't have any effect.

What error are you getting, exactly?

-- Kostya

05.07.2010 20:20, jul пишет:



 

Hi,
   
 

I want to save a list of Parcelable Restaurant objects on
onSaveInstanceState. I created a Restaurant class extending Parcelable
and a RestaurantList object, both shown below. In my main activity I
fill my RestauranList directly from json internet data using GSON:
   
 

  restaurantList = gson.fromJson(r, RestaurantList.class);
   
 

Now, when I want to save the List of Restaurant objects using
   
 

  protected void onSaveInstanceState(Bundle outState) {
   
 

  if (restaurantList != null ) {
  outState.putParcelableArrayList(restoList,