【发布时间】:2014-08-19 01:31:12
【问题描述】:
-
我在活动 B 中有一个列表视图,该列表视图通过适配器填充了列表列表。这个列表列表是从 Activity A 传递的包中检索到的,如下所示:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_results); lvLineups = (ListView)findViewById(R.id.lvResults); } @Override protected void onResume() { super.onResume(); lineups = (ArrayList<ArrayList<Band>>) getIntent().getSerializableExtra("results"); ResultsAdapter resultsAdapter = new ResultsAdapter(this, lineups); lvLineups.setAdapter(resultsAdapter); } 我从此 Activity 启动了一个隐式视频 Intent,因此 Activity B 进入后台(暂停,onPause 被调用)并且视频在前面。
我重新点击视频,终止了该活动。
-
Activity B 的简历(调用了 onResume),我看到列表(阵容)现在是空的。 根据活动生命周期,这个活动正在恢复,为什么我仍然看不到第 1 步中的列表列表,以及在隐式视频意图后如何保留它。
注意:这看起来像一个垂直列表视图,其中每一行都是一个水平滚动的列表。除了添加视频意图时,我已经让这个布局工作了。播放视频并向下滚动会导致 indexoutofbounds 异常,因为从 Activity A 收到的捆绑包 lineups 现在已经消失了。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_results);
lvLineups = (ListView)findViewById(R.id.lvResults);
lineups = (ArrayList<ArrayList<Band>>) getIntent().getSerializableExtra("results");
ResultsAdapter resultsAdapter = new ResultsAdapter(this, lineups);
lvLineups.setAdapter(resultsAdapter);
}
媒体播放器播放视频并关闭后,返回活动 B,我在调试器中看到阵容为空。这很奇怪,因为在调用 onCreate 之前它是一个未初始化的实例变量。我希望它在从 Activity B 启动视频意图后保持不变,或者至少为空。
【问题讨论】:
-
发布您将适配器设置为列表视图的代码。您正在从
A获取数据。因此,您需要将它们存储在某个地方以便在B中重复使用。 -
您是否将这些值存储在
onPause()ofB中? -
在
onResume()或onPause()中,您可能根本不需要对您的适配器做任何事情,但是在您发布代码之前,这个建议是没有实际意义的。
标签: android