示例:
public class ChannelActivity extends ActionBarActivity {
private String deviceId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState == null) {
deviceId = getIntent().getStringExtra("deviceId");
} else {
deviceId = savedInstanceState.getString("deviceId");
}
}
}
ChannelActivity接收device,跳转到下一个Activity,从下一个Activity直接按返回键返回ChannelActivity正常,点击ActionBar上的back按钮返回ChannelActivity,deviceId会直接为null,savedInstanceState也是null。直接导致程序报错。点击ActionBar和直接返回按钮是执行了不同过的代码,返回按钮单纯的是返回,而ActionBar则是直接创建一个新的ChannelActivity。于是修改ChannelActivity的android:launchMode参数为singleTop,问题解决。
参考:
Activity的四种launchMode
http://blog.csdn.net/liuhe688/article/details/6754323/