3

我通过使用以下代码在活动中添加了一个片段:

    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"/>

该活动具有数字时钟和时间选择器,并且在其下方显示片段,现在当我首先单击后退按钮时,片段消失,然后显示上一个活动。上一个活动如何一次显示?

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

4

1 回答 1

9

addToBackStack(null)将片段添加到返回堆栈,当按下返回时自动弹出。

因此,您可以通过两种方法解决此问题(以适合您的方式):

消除 addToBackStack(null)

或者

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

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

编辑:

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

于 2013-10-27T09:36:03.177 回答