示例:
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/