2013-08-15 4 views
0

в моем приложении Я динамически устанавливаю видимость линейного выхода. Проблема в том, что при вращении устройства состояние линейного макета (видимое или нет) не сохраняется.Как сохранить состояние экземпляра LinearLayout в Android?

Теперь я хотел бы сохранить состояние с помощью сохранения состояния экземпляра макета. Может ли кто-нибудь помочь мне с соответствующими методами? Какие ценности я должен предоставить?

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    // ?? 
} 

@Override 
protected void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    // ??? 
} 

ответ

0

Вы бы сохранить состояние экземпляра, сохраняя либо логическое или целое значение в комплекте:

private static final VISIBILITY_KEY = "anthing you want"; 

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    boolean isVisible = . . .; 
    outState.putBoolean(VISIBILITY_KEY, isVisible); 
} 

Вы бы прочитать его обратно в следующим образом:

@Override 
protected void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    boolean isVisible = savedInstanceState.getBoolean(VISIBILITY_KEY); 
    // do something with isVisible 
} 
0

Просто сохраните видимость как целое число в комплекте.

private final static String VIEW_1_VISIBILITY = "view_1_visibility"; 
private View mView1; 

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    outState.putInt(VIEW_1_VISIBILITY, mView1.getVisibility()); 
} 

@Override 
protected void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    if(savedInstanceState != null){ 
     mView1.setVisibility(savedInstanceState.getInt(VIEW_1_VISIBILITY, View.VISIBLE)); 
    } 
} 
+0

Что я могу сделать, чтобы использовать это в sherlockfragment? для ònRestoreInstanceState'I get 'Метод onRestoreInstanceState (Bundle) типа ABC должен переопределить или реализовать метод супертипа' – user2426316

+0

В документации есть пример: http://developer.android.com/reference/android/app/ Fragment.html. Кажется, что вы можете сделать это в 'onActivityCreated()' – SimonSays

Смежные вопросы