Java 在onCreate中初始化变量,但在onResume()中更新

Java 在onCreate中初始化变量,但在onResume()中更新,java,android,oncreate,onresume,Java,Android,Oncreate,Onresume,以下是我的情况: 我有如下的OnCreate代码: @凌驾 受保护的void onCreateBundle savedInstanceState{ super.onCreatesavedInstanceState; setContentViewR.layout.activity_main; bunz=bunz.getInstance;//获取bunz的实例 bunz.setBunz50; bunz.setMoney0; bunz.setIncrement1; Button upgradeButt

以下是我的情况: 我有如下的OnCreate代码:

@凌驾 受保护的void onCreateBundle savedInstanceState{ super.onCreatesavedInstanceState; setContentViewR.layout.activity_main; bunz=bunz.getInstance;//获取bunz的实例 bunz.setBunz50; bunz.setMoney0; bunz.setIncrement1; Button upgradeButton=Button findViewByIdR.id.upgradeButton; upgradeButton.SetOnClickListener新建视图.OnClickListener{ @凌驾 公共void onclick视图{ Intent startIntent=新IntentgetApplicationContext,UpgradeMenu.class; StartActivityStartent; } }; moneyCount=TextView findViewByIdR.id.moneyCount; bunzCount=TextView findViewByIdR.id.bunzCount; ImageButton bun=ImageButton findViewByIdR.id.bun; } 注意在我的OnCreate代码中,我是如何做两件事的;首先,我初始化所有需要的值:

bunz.setBunz50; bunz.setMoney0; bunz.setIncrement1; 然后我在文本视图上显示这些值,并设置一些按钮和意图:

Button upgradeButton=Button findViewByIdR.id.upgradeButton; upgradeButton.SetOnClickListener新建视图.OnClickListener{ @凌驾 公共void onclick视图{ Intent startIntent=新IntentgetApplicationContext,UpgradeMenu.class; StartActivityStartent; } }; moneyCount=TextView findViewByIdR.id.moneyCount; bunzCount=TextView findViewByIdR.id.bunzCount; ImageButton bun=ImageButton findViewByIdR.id.bun; 我是Android studio的新手,这里是我遇到的问题。我想使用onResume更新TextView中的这些值,每次返回此活动时,我都会在另一个活动中更新这些值。但是,如果我将onCreate中的所有代码移到onResume中,那么每次我返回此活动时,值都将设置为50、0和1。我知道我可以使用布尔值,这样onCreate会在应用程序第一次启动时触发,但onResume不会触发,然后onResume会在启动后触发,然后简单地将onCreate代码的后半部分复制并粘贴到onResume中,但这似乎效率低下,而且Android studio的设计初衷并非如此。我可以在另一个位置初始化这些值吗

我有一个全局Bunz类,如下所示:

公厕{ 私人内特布兹酒店; 私人货币; 私有整数增量; //单例码 私有静态Bunz实例; 私人床铺{ } 公共静态bunzgetInstance{ 如果实例==null{ 实例=新的Bunz; } 返回实例; } 盖特邦兹公共酒店{ 返回床; } 公共无效设置数{ bunz=num; } 公共货币{ 退钱; } 公共无效setMoneyint num{ 金钱=数量; } 公共整数增量{ 收益增量; } public void setIncrementint num{ 增量=num; } } 也许我可以在这里初始化这些值


谢谢

这里有一件事你可以做:

 public static Bunz getInstance(){
        if (instance == null){
            instance = new Bunz();
            instance.setBunz(50);
            instance.setMoney(0);
        }
        return instance;
    }
在此处创建实例时,请尝试在此处设置所需的值,而不是在应用程序的onCreate中


您也可以在构造函数中进行更改

这里有一件事你可以做:

 public static Bunz getInstance(){
        if (instance == null){
            instance = new Bunz();
            instance.setBunz(50);
            instance.setMoney(0);
        }
        return instance;
    }
在此处创建实例时,请尝试在此处设置所需的值,而不是在应用程序的onCreate中


您也可以在构造函数中进行更改

而您的代码使用静态,我认为这是不必要的。静态不是一般的goto解决方案,它们为不符合GC条件的对象带来了高昂的价格

您可以通过onActivityResult方法从第二个活动中获得结果

首先,使用startAtivityForResult//启动第二个活动。这将接收请求代码int,它可以是您设置的任何内容

第一项活动

第二项活动

捕获第二个活动结果 此代码应该在您的第一个活动中编写

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (requestCode == 100) {  //Remember the code we set in startActivityForResult? This is where we identify our work
     if(resultCode == Activity.RESULT_OK){   //Code to check if data is passed
        Int bunz =data.getIntExtra("bunz")
        bunz.setBunz(bunz)

       .....
    }
  }
}

而您的代码使用静态,我认为这是不必要的。静态不是一般的goto解决方案,它们为不符合GC条件的对象带来了高昂的价格

您可以通过onActivityResult方法从第二个活动中获得结果

首先,使用startAtivityForResult//启动第二个活动。这将接收请求代码int,它可以是您设置的任何内容

第一项活动

第二项活动

捕获第二个活动结果 此代码应该在您的第一个活动中编写

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (requestCode == 100) {  //Remember the code we set in startActivityForResult? This is where we identify our work
     if(resultCode == Activity.RESULT_OK){   //Code to check if data is passed
        Int bunz =data.getIntExtra("bunz")
        bunz.setBunz(bunz)

       .....
    }
  }
}

您能否解释一下您是如何在其他活动中更新这些值的,以及这些更新后的值是如何加载到Resume的?如果你能编辑你的帖子就好了
这些代码谢谢大家,从下面的答案中得到了答案!:您能否解释一下您是如何在其他活动中更新这些值的,以及这些更新后的值是如何加载到Resume的?如果你用这些代码编辑你的帖子就好了谢谢,从下面的答案中得到了解决方案妈的,太谢谢你了!我最后尝试在main之前启动另一个活动来初始化值,但这是一个更好的解决方案!:达曼,非常感谢!我最后尝试在main之前启动另一个活动来初始化值,但这是一个更好的解决方案!:D