Java 使用Fragments/FragmentActivity在活动重新创建期间保留数据
我一直在查看android文档和网络上的各种来源,但我似乎无法让我的应用程序在活动重新创建过程中保留数据(比如按下后退按钮退出,然后从图标或任务管理器进入应用程序) 我有3个类:主类(扩展FragmentActivity)、一个片段和一个在应用程序不活动时应该在后台运行的类,创建活动后,它需要更新片段 以下是我的资料来源: MainJava 使用Fragments/FragmentActivity在活动重新创建期间保留数据,java,android,android-fragments,android-fragmentactivity,retain,Java,Android,Android Fragments,Android Fragmentactivity,Retain,我一直在查看android文档和网络上的各种来源,但我似乎无法让我的应用程序在活动重新创建过程中保留数据(比如按下后退按钮退出,然后从图标或任务管理器进入应用程序) 我有3个类:主类(扩展FragmentActivity)、一个片段和一个在应用程序不活动时应该在后台运行的类,创建活动后,它需要更新片段 以下是我的资料来源: Main public class Main extends FragmentActivity { private FragmentExample mFragmen
public class Main extends FragmentActivity {
private FragmentExample mFragment;
private BackgroundClass bgClass = new BackgroundClass();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
manageFragment(getSupportFragmentManager());
}
protected void manageFragment(FragmentManager fm) {
mFragment = (FragmentExample) fm.findFragmentByTag("TAG");
if (mFragment == null) {
mFragment = new mFragment();
fm.beginTransaction().add(mFragment,"TAG").commit();
}
else fm.beginTransaction().attach(mFragment).commit();
}
@Override
protected void onStart() {
super.onStart();
mFragment = bgClass.update(mFragment);
}
}
片段
public class FragmentExample extends Fragment {
//declare variables
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment, container, false);
//initialize variables from View
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
//more initializations
}
}
背景类
public class BackgroundClass extends SomeOtherClass {
//declare variables
protected FragmentExample update(final FragmentExample fExample) {
//update listeners, variables, etc
return fExample;
}
//Overridden methods from SomeOtherClass
}
目前,它仅在我更改配置(即旋转屏幕)时更新数据。任何形式的帮助都会很好 这些场景——特别是“后退”按钮——在Android中的处理方式与在大多数其他操作环境中的大多数应用程序中的处理方式没有什么不同:边走边保存数据。这是一种方法,但我认为有一种方法可以维护活动的BackgroundClass对象,与定期在设备上保存数据不同。只有将数据作为临时缓存保存到文件、数据库等中,您才能将数据填充到静态数据成员中,但您的过程不会永远有效。不要将保存瞬态数据或缓存数据与将其“用于realz”存储在持久的位置混淆。