【发布时间】:2019-07-25 16:55:55
【问题描述】:
这是我的情况: 我有一个 OnCreate 代码,如下所示:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bunz = Bunz.getInstance(); //getting instance of bunz
bunz.setBunz(50);
bunz.setMoney(0);
bunz.setIncrement(1);
Button upgradeButton = (Button) findViewById(R.id.upgradeButton);
upgradeButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
Intent startIntent = new Intent(getApplicationContext(), UpgradeMenu.class);
startActivity(startIntent);
}
});
moneyCount = (TextView) findViewById(R.id.moneyCount);
bunzCount = (TextView) findViewById(R.id.bunzCount);
ImageButton bun = (ImageButton) findViewById(R.id.bun);
}
请注意,在我的 OnCreate 代码中,我做了两件事;首先,我初始化所有需要的值:
bunz.setBunz(50);
bunz.setMoney(0);
bunz.setIncrement(1);
然后我在 TextViews 上显示这些值并设置一些按钮和意图:
Button upgradeButton = (Button) findViewById(R.id.upgradeButton);
upgradeButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
Intent startIntent = new Intent(getApplicationContext(), UpgradeMenu.class);
startActivity(startIntent);
}
});
moneyCount = (TextView) findViewById(R.id.moneyCount);
bunzCount = (TextView) findViewById(R.id.bunzCount);
ImageButton bun = (ImageButton) findViewById(R.id.bun);
我是 Android Studio 的新手,这就是我遇到的问题。每次我回到这个活动时,我想使用 onResume() 来更新 TextView 中的这些值(我在另一个活动中更新它们)。但是,如果我将 onCreate 中的所有代码移动到 onResume 中,那么每次我返回此活动时,值将设置为 50,0 和 1。我知道我可以使用布尔值,以便 onCreate() 触发第一次启动应用,但是onResume()没有触发,然后onResume()触发,然后简单的将onCreate代码的后半部分复制粘贴到onResume()中,但是这样看起来效率很低,而且是不是 Android Studio 的设计方式。我可以以某种方式初始化另一个位置的值吗?
我有一个全局 Bunz 类,如下所示:
public class Bunz {
private int bunz;
private int money;
private int increment;
//singleton code
private static Bunz instance;
private Bunz(){
}
public static Bunz getInstance(){
if (instance == null){
instance = new Bunz();
}
return instance;
}
public int getBunz() {
return bunz;
}
public void setBunz(int num){
bunz = num;
}
public int getMoney(){
return money;
}
public void setMoney(int num){
money = num;
}
public int getIncrement(){
return increment;
}
public void setIncrement(int num){
increment = num;
}
}
所以也许我可以在这里以某种方式初始化这些值?
谢谢!
【问题讨论】:
-
您能否解释一下您是如何在其他活动中更新这些值的,以及这些更新后的值是如何在 Resume 上加载的?如果你用这些代码编辑你的帖子会很好
-
谢谢大家,从下面的答案中得到了解决方案! :)
标签: java android oncreate onresume