【问题标题】:how to save the state of fragment如何保存片段的状态
【发布时间】:2014-10-27 08:26:04
【问题描述】:

我有一个带有列表的片段:

public class GuestsList extends Fragment implements AdapterView.OnItemClickListener {
    private GuestsListAdapter adapter;
    private FragmentTransaction fTrans;
    private Fragment guestFragment;
    private ArrayList<GuestBean> guests;
    private ListView list;

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.guestlist, null);

        guests = new ArrayList<GuestBean>();
        list = (ListView) v.findViewById(R.id.gustLIST);
        adapter = new GuestsListAdapter(getActivity(), guests);
        list.setOnItemClickListener(this);

        new NewThread().execute();

        return v;
    }

    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
        fTrans = getFragmentManager().beginTransaction();
        guestFragment = new Guest();
        fTrans.replace(R.id.content_frame, guestFragment);
        fTrans.addToBackStack(null);
        fTrans.commit();
    }

    public class NewThread extends AsyncTask<String, Void, String> {

        @Override
        protected String doInBackground(String... strings) {
          //load data to guests
        }

        @Override
        protected void onPostExecute(String s) {
            list.setAdapter(adapter);
            progressDialog.cancel();
        }
    }
}

当您单击一个项目时,我创建了一个新片段 Guest 和旧片段被放置在 backstack 中。 当我在一个新片段中并单击后退按钮时,将打开位于 backstack 中的片段GuestList,并再次从 Internet 下载数据。我希望在创建新片段时保存它们,并且当您单击后退按钮重新加载时发生。

【问题讨论】:

标签: android


【解决方案1】:

最简单的解决方案是在片段事务中使用“添加”而不是“替换”

 fTrans.add(R.id.content_frame, guestFragment);

当你按下返回时它不应该创建新的片段,但如果你有很多片段,这不是一个很好的解决方案(当我有很多片段并且使用“添加”应用程序滞后时)

您可以在自定义应用程序类中创建对象缓存并从应用程序类获取对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多