android 不重新加载,Android生命周期 - 数据不重新加载

我一直在试图弄清楚是什么导致我的应用程序丢失两个ListView中的数据,两个选项卡中的每一个中都有一个,这两个都是ListFragment s。当您将应用带到最前沿时,ListView s在手机上随机排空。Android生命周期 - 数据不重新加载

我猜想我错过了如何恢复数据时,将备份应用程序。通常,应用程序还原并且两个选项卡中的数据都存在。

但是,只有在真实的手机上,数据将从ListView s消失,但我找不到可重复的模式。

我用DDMS模拟了很多组合中的垃圾收集,我无法重现数据的丢失。下面是我如何处理生命周期,简化和基本全部的伪代码。

我已经看过生命周期结构,并认为我有它的工作。

我刷新不正确?

主要活动

public class MyActivity extends FragmentActivity {

@Override

public void onCreate(Bundle savedInstanceState) {

// I don't refresh here

// add both tabs to the tab adapter

}

public void onRestart() {

super.onRestart();

reloadTab1();

reloadTab2();

}

}

标签1

public class MyTab1 extends ListFragment {

static MyTab1Adapter mAdapter;

ArrayList mItems;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// retain state

setRetainInstance(true);

reloadTab1(getActivity());

}

public void reloadTab1(Context context) {

mItems = updateItems();

if (mAdapter == null) {

mAdapter = new MyTab1Adapter(context, R.layout.tab1, mItems);

setListAdapter(mAdapter);

}

else {

mAdapter.setNewList(mItems);

mAdapter.notifyDataSetChanged();

}

}

}

标签2

public class MyTab2 extends ListFragment {

static MyTab2Adapter mAdapter;

ArrayList mItems;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// retain state

setRetainInstance(true);

reloadTab2(getActivity());

}

public void reloadTab2(Context context) {

mItems = updateItems();

if (mAdapter == null) {

mAdapter = new MyTab2Adapter(context, R.layout.tab2, mItems);

setListAdapter(mAdapter);

}

else {

mAdapter.setNewList(mItems);

mAdapter.notifyDataSetChanged();

}

}

}

2012-08-23

Kirk

+1

只是我猜错了,但'onRestart'并调用'super.onResume()'? –

+0

我其实只是注意到这是我的应用程序中的一个错误。也许这会解决它,我们会看到。好赶上 –

+0

如果您使用'onRestart',那么回调将不会被调用,除非活动在后台被杀害。每次都会调用onResume,因此每次返回活动时都应刷新片段。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值