Как использовать onSaveInstanceState() и onRestoreInstanceState() для сохранения и восстановления многомерного массива?

Как использовать onSaveInstanceState() и onRestoreInstanceState() для сохранения и восстановления многомерного массива?

Я использую ExpandableListView. У меня есть следующие группы и дети.

public static String[] groups = new String[] { "New York", "California",
        "Washington", "Florida", "Iowa"};
public static String[][] children = new String[][] { { } };

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
  .........................

  if(condition){
  children = populateChildren();
  }

  .........................
  }


  @Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    if (groups != null && children != null) {
        savedInstanceState.putStringArray("Groups", groups);
        savedInstanceState.putSerializable("Children", children);       
    }
    super.onSaveInstanceState(savedInstanceState);
}

  @Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
    if (savedInstanceState != null) {
        groups = savedInstanceState.getStringArray("Groups");
        children = (String[][]) savedInstanceState
                .getSerializable("Children");
    }
    super.onRestoreInstanceState(savedInstanceState);
}

Я получил следующее исключение java.lang.ClassCastException.

01-19 17:12:55.417: E/AndroidRuntime(708): вызвано: java.lang.RuntimeException: невозможно запустить действие ComponentInfo {com.abc.myapp / com.abc.myapp.mylistActivity}: java.lang. ClassCastException: [Ljava.lang.Object;

01-19 17:12:55.417: E/AndroidRuntime(708): на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2663)

01-19 17:12:55.417: E/AndroidRuntime(708): на android.app.ActivityThread.startActivityNow (ActivityThread.java:2503)

01-19 17:12:55.417: E/AndroidRuntime(708): на android.app.LocalActivityManager.moveToState (LocalActivityManager.java:127)

01-19 17:12:55.417: E/AndroidRuntime(708): на android.app.LocalActivityManager.startActivity (LocalActivityManager.java:339)

01-19 17:12:55.417: E/AndroidRuntime(708): на android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1047)

01-19 17:12:55.417: E/AndroidRuntime(708): на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2627)

01-19 17:12:55.417: E/AndroidRuntime(708):... еще 11 01-19 17:12:55.417: E/AndroidRuntime(708): вызвано: java.lang.ClassCastException: [Ljava.lang.Object; 01-19 17:12:55.417: E/AndroidRuntime(708): на com.abc.myapp.mylistActivity.onRestoreInstanceState (JobInfo.java:303)

01-19 17:12:55.417: E/AndroidRuntime(708): на android.app.Activity.performRestoreInstanceState (Activity.java:815)

01-19 17:12:55.417: E/AndroidRuntime(708): на android.app.Instrumentation.callActivityOnRestoreInstanceState (Instrumentation.java:1096)

01-19 17:12:55.417: E/AndroidRuntime(708): на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2641)

01-19 17:12:55.417: E/AndroidRuntime(708):... еще 19

Есть ли способ сохранить и получить многомерный массив?

0 ответов

Другие вопросы по тегам