我无法保存以前的活动状态
这个问题在这里已经有了答案:
这是你如何恢复状态:
private ImageView map;
private ImageView dot;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map_layout);
map = (ImageView) findViewById(R.id.map);
dot = (ImageView) findViewById(R.id.dot);
MotionReceiver tc = new MotionReceiver();
LocalBroadcastManager.getInstance(this).registerReceiver(tc, new
IntentFilter(Constants.TEXT_MOVEMENT));
if(savedInstanceState != null){
dot.setX(savedInstanceState.getFloat("X"));
dot.setY(savedInstanceState.getFloat("Y"));
}
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putFloat("X", dot.getX());
savedInstanceState.putFloat("Y", dot.getY());
}
从文档 。
当您的活动因用户按下“后退”或活动自行完成而被销毁时,该活动实例的系统概念将永远消失,因为该行为表示活动不再需要。 但是,如果系统由于系统限制(而不是正常的应用程序行为)而破坏了活动,那么虽然实际的活动实例已经消失,但系统会记住它已存在,因此如果用户导航回它,系统会创建一个新的使用一组保存的数据描述活动在销毁时的状态。 系统用于恢复先前状态的已保存数据称为实例状态,是存储在Bundle对象中的键值对的集合。
所以你的问题是错误的理解onSavedInstanceState()
方法。 这被称为在系统破坏你的应用程序的情况下,但不是你。
为了保存一些变量,你需要在按下后退按钮调用onDestroy()
方法后进行恢复,你必须使用SharedPreferences 。
我不知道你正在使用什么框架,但是这些行看起来很可疑:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putFloat("X", dot.getX());
savedInstanceState.putFloat("Y", dot.getY());
}
尝试:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
savedInstanceState.putFloat("X", dot.getX());
savedInstanceState.putFloat("Y", dot.getY());
super.onSaveInstanceState(savedInstanceState);
}
链接地址: http://www.djcxy.com/p/26199.html