修改
这是我在initialize
方法中加载activity
布局后用于onCreate()
个变量的方法
private void initializeVariables() {
randomButton = (Button) findViewById(R.id.randomButton);
gameButton = (Button) findViewById(R.id.gameButton);
i = 1;
listIndex = 0;
nameList = PlayersNames.nameList;
villagerBundle = new ArrayList<>();
characters = new ArrayList<Card>();
players = new ArrayList<Player>();
villagerOne = new Villager();
villagerTwo = new Villager();
villagerThree = new Villager();
villagerFour = new Villager();
villagerFive = new Villager();
villagerBundle.add(villagerOne);
villagerBundle.add(villagerTwo);
villagerBundle.add(villagerThree);
villagerBundle.add(villagerFour);
villagerBundle.add(villagerFive);
}
原始问题:
我在Android中有 2项活动。
在一个中我创建:
public static Villager villagerOne;
villagerOne = new Villager();
然后在另一个中,我应该访问villagerOne
的{{1}}变量:
mAlive
作为参考,这些是villagerOne.getMAlive();
类:
Card
这是public class Card {
//Names
public String mCharacter;
//Status
private boolean mAlive;
private boolean mDefended;
private boolean mOwled;
private boolean mLastSavaged;
private boolean mLastLynched;
//Constructor
public Card(){
}
public void setMCharacter(String value){
this.mCharacter = value;
}
public void setMAlive(boolean alive){
this.mAlive = alive;
}
public String getMCharacter(){
return mCharacter;
}
public boolean getMAlive(){
return mAlive;
}
}
类,Villager
:
extends Card
答案 0 :(得分:0)
由于您在活动一个中宣布您的村民为静态,您应该可以从任何地方访问
one.villagerOne.getMAlive()
(这里我假设活动类别1的名称是一个)
由于这个解决方案似乎存在争议,我会告诉你为什么我认为它是一个好的解决方案:
如果您通过意图传递村民的副本并且您的村民被杀死了#34;原来的村民将被销毁,为什么副本仍然存在。这意味着你必须通过副本与每个活动进行沟通,并告诉他们要解散他们的村民副本。听众等等。
如果您按照我的建议使用对静态成员的引用,那么您需要做的就是在调用任何方法之前测试null
的引用:
if( one.villagerOne != null ) alive = one.villageOne.getMAlive();
答案 1 :(得分:0)
如果您需要该变量的副本,则应通过extras传递它。如果您需要访问该实际变量 - 您可能应该重新构建。多个活动所需的数据不应归任何活动所有,它应由两个活动可以达到的另一个数据结构所拥有。例如,单个Player对象可以查询其卡片列表。
答案 2 :(得分:0)
我认为如果你让Villager类实现Serializable,你可以发送它的意图如下:
Intent i = new Intent(FirstActivity.this, SecondActivity.class);
Villager villagerOne;
villagerOne = new Villager();
i.putExtra("Villager", strName);
startActivity(i);
在第二项活动中,你会得到结果:
Villager villager = (Villager) getIntent.getSerializableExtra("Villager");