我在活动中添加了一个片段,使用下面的代码:
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"/>
活动有数字时钟和时间戳,下面显示片段,现在当我点击后退按钮时,片段消失,之后显示上一个活动。如何一次显示以前的活动?
我的下一个问题是如何在屏幕上按下按钮时刷新片段?
答案 0 :(得分:10)
addToBackStack(null)
将片段添加到后面的堆栈中,当按下后面时会自动弹出。
所以你可以通过两种方法解决这个问题(适合你):
删除addToBackStack(null)
或强>
将以下代码添加到您的活动中:
@Override
public void onBackPressed(){
finish();
}
修改强>
就片段的刷新而言,你有两个选择:第一个是简单地用旧片段替换旧片段。第二个是你可以维护你的片段的一个对象,并有setter / getter函数来更新片段内的数据。