android 应用程序在使用 onSaveinstanceState 启动意图时崩溃
我有一个列表视图。 ListView 的项目保存在称为 MSG 的 ArrayList 中。 现在我将 onSaveInstanceState 和 onRestoreInstanceState 实现到我的类中。
方向改变的东西有效,但是当我单击 ListView 的项目时,应用程序崩溃。
我不知道问题是什么。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.inbox);
//ListView
lv = (ListView)findViewById(R.id.list2);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
try {
Intent ii = new Intent(Inbox.this, MSGsOpenMsg.class);
ii.putExtra("messageid", m_MSGs.get(position).messageid);
ii.putExtra("box", "inbox");
startActivityForResult(ii, 0);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState)
{
savedInstanceState.putSerializable("MSGs", (Serializable)m_MSGs);
super.onSaveInstanceState(savedInstanceState);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState)
{
super.onRestoreInstanceState(savedInstanceState);
m_MSGs = (ArrayList<MSGs>) savedInstanceState.getSerializable("MSGs");
}
I have a ListView. The Items of the ListView are saved in a ArrayList called MSGs.
Now i implented onSaveInstanceState and onRestoreInstanceState to my class.
The thing with the orientation change works, but when i click on a item of the ListView the App crash.
I dont know what the problem could be.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.inbox);
//ListView
lv = (ListView)findViewById(R.id.list2);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
try {
Intent ii = new Intent(Inbox.this, MSGsOpenMsg.class);
ii.putExtra("messageid", m_MSGs.get(position).messageid);
ii.putExtra("box", "inbox");
startActivityForResult(ii, 0);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState)
{
savedInstanceState.putSerializable("MSGs", (Serializable)m_MSGs);
super.onSaveInstanceState(savedInstanceState);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState)
{
super.onRestoreInstanceState(savedInstanceState);
m_MSGs = (ArrayList<MSGs>) savedInstanceState.getSerializable("MSGs");
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您的 ListView 类正在扩展 android api ListActivity,我处理单击或选择列表项之一的方式是通过重写 onListItemClick 方法,如下所示:
If your ListView class is extending the android api ListActivity, the way I handle clicking or selecting one of the list items is through overriding the onListItemClick method, like so: