java - 在 onCreate 中初始化变量,但在 onResume() 中更新它们

标签 java android oncreate onresume

这是我的情况: 我有一个如下所示的 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);

然后我在 TextView 上显示这些值并设置一些按钮和 Intent :

      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 的新手,这是我遇到的问题。每次返回此 Activity 时,我都想使用 onResume() 更新 TextView 中的这些值(我在另一个 Activity 中更新它们)。但是,如果我将 onCreate 中的所有代码移到 onResume 中,那么每次我返回此 Activity 时,值都将设置为 50,0 和 1。我知道我可以使用 boolean 值,以便 onCreate() 触发第一次启动app,但是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;
    }

}

所以也许我可以在这里以某种方式初始化这些值?

谢谢!

最佳答案

这是您可以选择做的一件事:

 public static Bunz getInstance(){
        if (instance == null){
            instance = new Bunz();
            instance.setBunz(50);
            instance.setMoney(0);
        }
        return instance;
    }

在此处创建实例时,尝试在此处设置您想要的值,而不是在应用程序的 onCreate 中。

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

关于java - 在 onCreate 中初始化变量,但在 onResume() 中更新它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57206892/

相关文章:

java - RxJava 错误处理

android - 是否可以在 onCreate 方法中获取 Android 加速度计值?

java - 我可以问一个类它需要什么类型的泛型吗?

java - 列表初始化错误

android - 在非市场应用程序上调试崩溃

java - 无法理解JAVA代码行

android - 未显示主要 Activity 的 onCreate 中的进度对话框

java - 反向传播算法编程

java - Arquillian 和 TimerService

java - 从相机捕获图像后传递额外的 Intent