我无法保存以前的活动状态

这个问题在这里已经有了答案:

  • 使用保存实例状态保存Android活动状态25个答案

  • 这是你如何恢复状态:

    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

    上一篇: I can't save the previous state of my activity

    下一篇: Save and Store Activity in Android