片段隐藏在后退按钮后

时间:2013-10-27 09:22:00

标签: android android-layout android-fragments

我在活动中添加了一个片段,使用下面的代码:

    FragmentManager fragmentManager=getFragmentManager();
    FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();
    PreferenceFragment preferencefragment=new Preferencefragment();
    fragmentTransaction.add(R.id.maincontainer, preferencefragment);
    fragmentTransaction.addToBackStack(null);
    fragmentTransaction.commit();

布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<DigitalClock
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/digitalClock"
    android:layout_gravity="center"
    android:textColor="@color/appcolor"
    android:layout_centerHorizontal="true"
    style="@android:style/TextAppearance.DeviceDefault.Large"
    android:textSize="45dp"/>
<TimePicker
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/timePickersms" />

<FrameLayout
    android:id="@+id/maincontainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

活动有数字时钟和时间戳,下面显示片段,现在当我点击后退按钮时,片段消失,之后显示上一个活动。如何一次显示以前的活动?

我的下一个问题是如何在屏幕上按下按钮时刷新片段?

1 个答案:

答案 0 :(得分:10)

addToBackStack(null)将片段添加到后面的堆栈中,当按下后面时会自动弹出。

所以你可以通过两种方法解决这个问题(适合你):

删除addToBackStack(null)

将以下代码添加到您的活动中:

@Override
public void onBackPressed(){
    finish();
}

修改

就片段的刷新而言,你有两个选择:第一个是简单地用旧片段替换旧片段。第二个是你可以维护你的片段的一个对象,并有setter / getter函数来更新片段内的数据。