我在活动B中有一个列表视图,通过适配器填充列表列表。这个列表列表是从活动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);
}
我从此活动中启动了一个隐含的视频意图,因此活动B在后台进行(暂停,调用onPause),视频就在前面。
我点击视频,杀死该活动。
活动B的简历(onResume被调用),我看到列表(阵容)列表现在是空的。 根据活动生命周期,此活动正在恢复,所以为什么我仍然没有在步骤1中看到列表列表,以及如何在隐含视频意图之后保留它。
注意:这看起来像一个垂直列表视图,其中每一行都是一个水平滚动列表。除了添加视频意图时,我才能使用此布局。播放视频并向下滚动会导致indexoutofbounds异常,因为从活动A收到的阵容现已消失。
@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之前它是一个未初始化的实例变量。我预计它会在活动B启动视频意图后保持不变,或者至少为null。
答案 0 :(得分:0)
好的,让我们一起完成活动周期。
最初,您从活动A =&gt;启动了活动B.所以lineups
是从活动A的束中获取的。所以你得到了这个值。
然后你启动了Video
这是另一个意图。然后你要回去了。此时再次调用onResume()
(其中包没有lineups
的值)。您应该在lineups
而不是onCreate()
中获得onResume()
,暂停后会调用{{1}}。