【问题标题】:Prevent Activity from saving state when user selects back button当用户选择后退按钮时,防止 Activity 保存状态
【发布时间】:2010-05-02 22:37:06
【问题描述】:

我有一个带有列表的活动,该列表绑定到 ListAdapter,将数据从数据库读取到 ArrayList。首次加载数据时一切正常。当 Activity 打开并显示列表时,数据库中的数据可能会被服务更新,但列表不反映更改,因为 ArrayList 不知道更改。如果 Activity 不再在前台,就像用户转到主屏幕然后又被带回前台的情况一样,我希望 Activity 不显示它之前所做的事情,而是使用重新加载数据视图绑定到的 ListAdapter。我认为有些东西需要调用完成(),但我不确定是什么。这就是我在 Activity 中的内容。

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setUpViews();
app = (MyApplication) getApplication();
adapter = new MyListAdapter(this, app.getMyEvents());
setListAdapter(adapter);
}
@Override
protected void onResume() {
super.onResume();
adapter.forceReload();
}

【问题讨论】:

    标签: android android-activity


    【解决方案1】:

    我有一个带有列表的活动 绑定到 ListAdapter 读取数据 从数据库到 ArrayList。

    为什么不使用CursorAdapter 而不是将所有内容都读入ArrayAdapter

    当 Activity 打开并且 列表正在显示它是可能的 并且很可能在 数据库将由服务更新 但该清单并未反映 改变,因为 ArrayList 没有 了解这些变化。

    如果您使用CursorAdapter,您只需在Cursor 上调用requery(),您的列表就会更新为数据库的最新内容。例如,您可以在onStart() 中执行此操作,并且只要用户返回活动(从主屏幕、从他们接听的电话等)返回,就会触发它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      • 2017-03-25
      • 2011-10-30
      • 2021-09-18
      • 2010-12-19
      • 1970-01-01
      相关资源
      最近更新 更多