Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:使用对象存储游戏变量_Java_Android_Android Intent_Parcelable - Fatal编程技术网

Java Android:使用对象存储游戏变量

Java Android:使用对象存储游戏变量,java,android,android-intent,parcelable,Java,Android,Android Intent,Parcelable,我正在开发一个简单的Android游戏,包括一个MainActivity和一个GameActivity。在主活动中,用户可以选择一些选项,然后使用这些选项/变量(即游戏模式、游戏难度等)开始游戏 因为我有很多变量要存储(准确地说是26个),而且Java是面向对象的,所以我考虑使用我自己的游戏类来存储和检索所有变量,如下所示: public class Game implements Parcelable { private int gameMode; private int g

我正在开发一个简单的Android游戏,包括一个MainActivity和一个GameActivity。在主活动中,用户可以选择一些选项,然后使用这些选项/变量(即游戏模式、游戏难度等)开始游戏

因为我有很多变量要存储(准确地说是26个),而且Java是面向对象的,所以我考虑使用我自己的游戏类来存储和检索所有变量,如下所示:

public class Game implements Parcelable {

    private int gameMode;
    private int gameDifficulty;

    // Constructor
    public Game(int gameMode, int gameDifficulty) {
        this.gameMode = gameMode;
        this.gameDifficulty = gameDifficulty;
    }

    // getters and setters here

}
把这当作包裹放在我心里

Game myGame = new Game(gameMode, gameDifficulty);
Intent gameIntent = new Intent(this, GameActivity.class);
gameIntent.putExtra("game", myGame);
startActivity(gameIntent);

我的问题是:使用对象来存储和传递游戏变量是方便还是过分了?最好的方法是什么?我错过什么了吗?提前谢谢你

当然,在对象中保存设置是一个好方法。如果您有多个依赖于该对象的活动,那么您应该考虑使用SuntLon缓存它,并将其保存到内部存储。
如果您有一个依赖于设置的活动(比如我猜您的情况),那么可以使用实现Parcelable的类,并通过Intent将该类的实例传递给GameActivity

否则你会怎么做?当然你会使用对象。你错过了
packet
文档中告诉你它不是用于持久存储的部分。。。在活动之间传递-可以,但如果您想使用一些持久性存储,则不能使用包裹/包裹
Game myGame = new Game(gameMode, gameDifficulty);
Intent gameIntent = new Intent(this, GameActivity.class);
gameIntent.putExtra("game", myGame);
startActivity(gameIntent);