0

基本上就是标题所说的。目前,如果我的应用程序中的方向发生变化,球会重置回游戏的顶部,但是我希望更改我的代码,以便如果用户更改设备的方向,球和球拍会保持在同一个位置。我将如何实现这一目标?我会把我的全部放在这两种方法中吗?

protected void onSaveInstanceState(Bundle outState) {

super.onSaveInstanceState(outState);
Log.v(TAG,  "onSaveInstanceState");
}

protected void onRestoreInstanceState(Bundle savedInstanceState) {

super.onRestoreInstanceState(savedInstanceState);
Log.v(TAG,  "onRestoreInstanceState");
}

(注意我已经在我的代码中初始化了 TAG 的常量,这里没有看到)。
(这也是一项活动)

4

1 回答 1

0

您可以在外州保存球和球拍的位置,因此在活动中:

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);

    //If it is an integer
    outState.putInt(TAG, mBallPosition);

    //Or use a serializable if you wish to store an actual object
   outState.putSerializable(TAG, mBallPosition);
}

然后在您的 onCreate 方法中,您可以恢复状态:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (savedInstanceState != null) {
        int position = savedInstanceState.getInt(TAG,0);
        //set ball position

        //or get the object back using outstate.getSerializable(TAG) 

    }
}
于 2014-09-29T11:06:27.523 回答