私はAndroidのドキュメントとWeb上のさまざまなソースを見てきましたが、アクティビティの再作成全体でアプリにデータを保持させることができないようです(戻るボタンを押して終了し、アイコンからアプリに入るなど)またはタスクマネージャ)。
メインのクラス (FragmentActivity を拡張)、フラグメント、およびアプリがアクティブでないときにバックグラウンドで実行する必要があるクラス、およびアクティビティが作成された後にフラグメントを更新する必要があるクラスの 3 つのクラスがあります。
ここに私の情報源があります:
主要
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
}
}
BackgroundClass
public class BackgroundClass extends SomeOtherClass {
//declare variables
protected FragmentExample update(final FragmentExample fExample) {
//update listeners, variables, etc
return fExample;
}
//Overridden methods from SomeOtherClass
}
現在、構成を変更した場合 (つまり、画面を回転させた場合) にのみデータが更新されます。どんな種類の助けも素晴らしいでしょう。