1

我正在使用无视图片段在我的活动方向更改期间存储一些数据。它看起来大致是这样的:

public class BoardActivity extends BaseActivity {
    private DataHandler mDataHandler;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // initialize the data handler
        mDataHandler = (DataHandler)mFragmentManager.findFragmentByTag("data");
        if (mDataHandler == null) {
            mDataHandler = new DataHandler();
            mFragmentManager.beginTransaction().add(mDataHandler, "data").commit();

            // initialize the data
            mDataHandler.mThreads = ...;
        } else {

            // here, the data is taken and the ListView is filled again.
            fillView();
        }
    }

    public static class DataHandler extends Fragment {
        private Topic[] mThreads;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setRetainInstance(true);
        }
    }
}

发生的情况是,当 Activity 离开时(例如使用主页按钮)并且由于某种原因在后台被杀死,应用程序在该 Activity 重新启动时崩溃。原因是虽然 FragmentmDataHandler被 FragmentManager 找到了,但它的 Member 变量 ( mThreads) 是null.

为什么 Fragment 本身可以保留,但其变量设置为零?

4

1 回答 1

1

为什么 Fragment 本身可以保留,但其变量设置为零?

片段没有保留。保留的片段仅在配置更改时保留。您没有进行配置更改。您的进程已终止,因为 Android 需要 RAM 来支持其他应用程序。

于 2013-03-23T11:53:13.037 回答