我们假设我有一个班级MainActivity
。
这包含存储在字段中的许多对象,例如Player
,Enemy
,Level
等的实例。这些对象中的每一个都需要能够互相引用对象
最好的方法是什么?
将这些字段设为静态,并相应地引用它们,即
MainActivity.player.setHealth(0);
为每个字段创建getter方法,并简单地将每个对象传递给MainActivity
,以便他们可以调用这些getter方法,即
mainActivity.getPlayer().setHealth(0);
将每个对象传递给每个其他对象,并将这些引用存储在每个对象的字段中,以便可以直接引用它们,即
player.setHealth(0);
答案 0 :(得分:2)
不是一个真正的答案,只是为了给你一些提示。
你的播放器应该如此:
public class Player
{
private static Player _player = null;
int _health;
...
public static Player getInstance()
{
if (_player == null)
_player = new Player(...);
return _player;
}
public void increaseHealth(int amount)
{
_health += amount;
}
}
然后,在您需要播放器的应用程序的任何部分,您都可以:
Player p = Player.getInstance();
你会一直得到同一个玩家。您可以对您的关卡类做类似的事情,因为任何时候只有1个关卡会活动。
然而敌人类需要采用不同的方法。我会在Level类中创建一个List,并像这样得到它们:
Level l = Level.getInstance();
List<Enemy> enemiesOnLevel = l.getEnemies();
// do something with them
答案 1 :(得分:0)
在这里查看Android文档:http://developer.android.com/guide/faq/framework.html#3。还可以将对象序列化为原始数据类型,并将Intent中的对象传递给新的Activity。
答案 2 :(得分:0)
在活动之间共享对象的另外两个选项是使用parcable,我认为这可能是性能最高的方法和共享首选项。
在我的应用程序中,我曾经学过(我对android编程知之甚少),我使用gson将对象序列化为json,然后将其存储在活动A的共享首选项中,然后从活动B中的共享首选项重新创建它,然后再次存储它。