在类中使用全局变量

时间:2018-06-28 11:58:42

标签: java android global-variables

我正在将android studio用于项目api 21最低要求, 我有一个带有文本字段和按钮的活动,单击时要在应用程序的生命周期内存储文本字段的文本,为此我使用了全局变量。
我有一个扩展应用程序的类变量:

package com.example.user.variableglobale;

import android.app.Application;


public class Variable extends Application {

private String chiffre;

public String getChiffre() {
    return this.chiffre;
}

public void setChiffre(String chiffre) {
    this.chiffre = chiffre;
}

在我的主里面:

   final Variable VG = (Variable) getApplication();
    final TestVar tV = new TestVar();

    btnOk.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            tV.testVar(MainActivity.this);
            VG.setChiffre(String.valueOf(txt.getText()));
        }
    });

这是用按钮调用的Java类:

    public class TestVar {

    public void testVar(Context context) {
        Variable VG = (Variable) context.getApplicationContext();

        String temp = VG.getChiffre();

        Toast.makeText(context.getApplicationContext(), "test java VG " + temp, Toast.LENGTH_SHORT).show();
    }
}

任何人都可以解释在java类中使用全局变量的方法吗?
当我单击该按钮时,将出现一个带有“温度”的“空”值的吐司(似乎尚未初始化)。
在我的示例中,我尝试使用“上下文”,但无济于事。

2 个答案:

答案 0 :(得分:0)

好的,终于可以了, 在我的onclickListener中,我必须交换变量声明和类的调用...一切正常

答案 1 :(得分:0)

我认为存储 变量 的更好方法是将其存储在共享首选项中。您可以在任何活动中访问它,即使应用程序已关闭,它也将持续存在。 您可以将其用于需要变量这样的的情况。

主要:

static final String CHIFFRE_KEY = "chiffre_key";
final TestVar tV = new TestVar();

btnOk.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        SharedPreferences = getActivity().getPreferences(Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPref.edit();
        editor.putString(CHIFFRE_KEY, String.valueOf(txt.getText()));
        editor.commit();

        tV.testVar(MainActivity.this);
    }
});

和testVar方法看起来像这样

public void testVar(Context context) {

    String vg = getActivity().getPreferences(Context.MODE_PRIVATE).getString(CHIFFRE_KEY);

    Toast.makeText(context.getApplicationContext(), "test java VG " + vg, Toast.LENGTH_SHORT).show();
}

您可以了解有关共享首选项here

的更多信息