Проблема с отображением видимости при возврате к фрагменту с помощью кнопки «Назад» - PullRequest
1 голос
/ 14 декабря 2011

У меня есть представление с видимостью, установленным на GONE в макете XML, и это может быть установлено на VISIBLE программно во фрагменте.При возвращении к этому фрагменту с помощью кнопки «Назад» видимость представления всегда устанавливается на GONE, даже если перед выходом из него было установлено значение VISIBLE.

Как сохранить состояние фрагмента?(вызывается только onResume () при возврате к фрагменту)?

Спасибо

XML

...
<LinearLayout
        android:id="@+id/sub_bio_container"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:visibility="gone" />
....

Активность

public class MyFragment extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    ...
    LinearLayout sub_bio_container = (LinearLayout) findViewById(R.id.sub_bio_container);

    if(<some condition>){
        sub_bio_container.setVisibility(VIEW.VISIBLE);
    }
    ....
}

Ответы [ 4 ]

1 голос
/ 14 декабря 2011

используйте onSaveInstanceState (Bundle) , чтобы сохранить состояние приложения (например, статус видимости ваших представлений) и onRestoreInstanceState (Bundle saveInstanceState) , чтобы получить последнее состояние.

1 голос
/ 14 декабря 2011

Что ж, идея была бы такова: установите представление в xml как VISIBLE, а когда вы используете его в приложении (через inflate или findviewbyid ()), установите GONE. Таким образом, это будет видно в резюме, и вы можете контролировать его видимость из кода.

Вторая идея: отслеживать возобновление, если представление было скрыто или нет, и устанавливать видимость этого представления в onResume ().

0 голосов
/ 14 декабря 2011

Посмотрите на эту документацию: http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

В зависимости от того, завершаете ли вы свою деятельность или нет, может быть также включен onRestart.

Можете ли вы показать нам свой XML / код?

0 голосов
/ 14 декабря 2011
 @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
            view.setVisiblity(View.VISIBLE)
                    onResume();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
...