使用后退按钮返回片段时查看可见性问题

时间:2011-12-14 10:30:40

标签: android android-activity visibility

我在布局xml中将可见性设置为GONE,并且可以在片段中以编程方式将其设置为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 个答案:

答案 0 :(得分:1)

好主意是:将xml中的视图设置为VISIBLE,当你在app中使用它时(通过inflate或findviewbyid())将其设置为GONE。像这样,它将在简历中显示,您可以通过代码控制它的可见性。

第二个想法是:如果隐藏或不隐藏视图,请继续跟踪,并在onResume()中设置该视图的可见性。

答案 1 :(得分:1)

使用 onSaveInstanceState(Bundle)来保存您的应用程序状态(例如您的视图的可见性状态)和 onRestoreInstanceState(Bundle savedInstanceState)以检索上一个状态。

答案 2 :(得分:0)

看一下这个文档: http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

根据您是否完成活动,可能还有onRestart。

你能告诉我们XML /代码吗?

答案 3 :(得分:-2)

 @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);
    }