【问题标题】:How to create an instance variable in one activity Android?如何在一项活动 Android 中创建实例变量?
【发布时间】:2019-07-26 21:12:03
【问题描述】:

所以这似乎是一个奇怪的问题,但我对 Android Studio 有一些不理解的地方(我刚开始使用它)。

如果我想在一个活动中创建一个变量,然后在我的活动中用不同的方法访问它,我应该可以做到,对吧? 例如,考虑以下代码:

public class bakers extends AppCompatActivity {
    private Bunz bunz;

    BigDecimal baker1Cost = BigDecimal.valueOf(20); //cost of baker1

    BigDecimal baker1Bunz = BigDecimal.valueOf(.1); //number of bunz produced by each baker1
    TextView baker1CostText = (TextView) findViewById(R.id.baker1Cost);
    TextView baker1Owned = (TextView) findViewById(R.id.baker1Owned);
    TextView baker1BunzText = (TextView) findViewById(R.id.baker1Bunz);
    TextView bunzCount = (TextView) findViewById(R.id.bunzCount3);
    TextView moneyCount = (TextView) findViewById(R.id.moneyCount3);

    @Override
    protected void onResume() {


        super.onResume();
        setContentView(R.layout.activity_bakers);

        bunz = Bunz.getInstance();



        bunzCount.setText("Bunz: " + bunz.getBunz());


        moneyCount.setText("Money: " + bunz.getMoney());


        baker1BunzText.setText(baker1Bunz.toPlainString());


        baker1CostText.setText("Cost: " + (baker1Cost));


        baker1Owned.setText("Owned: " + bunz.getBaker1());


    }
...

在这段代码中,我尝试在我的 onResume() 方法之前声明和初始化一堆变量,但这不起作用。我发现我可以在 onResume() 方法之前 declare 变量,但是例如如果我想在 onResume() 方法中更新这些变量的值,那很好,但是如果我想用其他方法访问那个变量,比如onClick,我做不到,必须重新定义变量。

我在这里做错了吗?从本质上讲,我的问题归结为:我想为 one 活动(不是在所有活动中)有一个实例变量,我可以在活动中的任何地方访问和修改它。

编辑:似乎认为在 onResume 方法与 int 之类的东西一起工作之前初始化和声明变量,但我只能 declare 按钮和 Textviews 之类的东西 - 有什么办法可以解决这个问题?

谢谢

【问题讨论】:

    标签: java android android-studio variables instance-variables


    【解决方案1】:

    为什么不在 Activity 的 onCreate 方法中初始化变量? Here您可以了解活动生命周期。

    【讨论】:

    • 如果我在那里初始化它们,我可以在活动的其他方法中访问它们吗?
    • 编辑:因此,根据该文档,在 onCreate 方法中初始化变量会创建实例变量,但这是否也适用于 onResume?
    • 您在回调函数之外使用了findViewById 方法,该方法仅在您设置活动布局后才有效(参见文档中onCreate 方法中的setContentView())。您应该在 onCreate 中使用setContentView(),因为它在onResume 之前被调用。之后,您可以使用 findViewById 初始化您的视图
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    相关资源
    最近更新 更多