我有一个ListView
列表中的每个元素都有其自己的详细信息视图。每个详细视图也都有其“详细视图”。单击列表中的某个项目后,我将该项目的ID发送到第一个详细信息视图(使用Intent
),然后使用该ID来获取数据。但是,当我转到第二个详细信息视图并向后导航时,“活动”将抛出一个NullPointerException
,因为(当然)getIntent().getExtras()
现在为空。
有没有一种方法可以解决此问题而不必更改我的方法?如果不是,我应该怎么做才能解决这个问题?谢谢。
一种方法是将这些附加信息发送到详细信息视图,然后在向后导航时,将这些附加信息发送回去,因此当您的活动(带有listView的活动)不会崩溃。
它看起来像:
baseActivity.java(这是带有ListView的那个)
Intent intent = new Intent(this, detailView.class);
intent.putExtra("nameHere1", valueHere1);
intent.putExtra("nameHere2", valueHere2);
//just put extra's here
startActivity(intent);
finish();
并且在您的detailView.java中将在onBackPressed中执行以下操作:
Intent intent = new Intent(this, baseActivity.class);
intent.putExtra("nameHere1", getIntent().getExtra("nameHere1"));
intent.putExtra("nameHere2", getIntent().getExtra("nameHere2"));
//just put extra's here
startActivity(intent);
finish();
另一个解决方案是不调用finish();
baseActivity,您的活动将如下所示:
baseActivity.java(这是带有ListView的那个)
Intent intent = new Intent(this, detailView.class);
intent.putExtra("nameHere1", valueHere1);
intent.putExtra("nameHere2", valueHere2);
//just put extra's here
startActivity(intent);
detailView.java会在onBackPressed中执行以下操作:
finish();
用这种方法,您不会“杀死” baseActivity,因此当detailView出现在屏幕上时,它的值仍然存在。但是,我并不真正支持这种方法,因为它占用了不必要的RAM。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句