在另一个类中更改Mainactivity变量的值

时间:2017-12-20 16:56:48

标签: java android string android-activity scope

我不想在副本中进行更改,而是我要求在变量中作为引用进行更改,以便更改应反映在Name类中。

在我的应用程序中,我在new_standard = Standard.objects.create(Name=lname,ShortName=sname,calcmethod=method,Description=descr,course=course,Order=stdnum) new_standard.save() 类中声明为公共静态的全局变量“key”,我创建了一个“重置键”按钮,它对另一个活动产生了一个Intent。

在该活动中,我想更改主要活动的键值。我使用的是mainactivity ,之后,我在key1变量中进行了更改,但在更改变量hen后,我返回主活动,键变量仍然相同。

所以,我希望将更改作为参考,而不是作为对象或变量的副本。

3 个答案:

答案 0 :(得分:0)

您可以创建一个静态属性:

private static String key1;
public void setKey(String newKey){
     key1 = newKey;
} 

在另一个活动电话中:

MainActivity.setKey(NewKey);

答案 1 :(得分:0)

首先更改key1的值,然后将此值分配给 MainActivity 变量,如下所示。

MainActivity.key = key1;

答案 2 :(得分:0)

对于OnClickListener而言,它不起作用。我已经遇到了这个问题,对于解决方案,我不得不使用一种可以更改MainActivity变量值的方法。

如果您在OnClickListener下工作,则可以像我一样按照以下步骤操作。

public class MainActivity extends Activity {

public static String mode = "Easy";
public static int dimension = 3;

......

}


public class SelectLevel extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_select_level);

    Button easy = (Button) findViewById(R.id.radio0);
    Button medium = (Button) findViewById(R.id.radio1);

    easy.setOnClickListener(respondClick);
    medium.setOnClickListener(respondClick);
}

public OnClickListener respondClick = new OnClickListener() {

    public void onClick(View MainActivity) {
        Context ctx = getApplicationContext();
        CharSequence text;
        switch (MainActivity.getId()) {
            case R.id.radio0:
                text = "StartGame Pressed";
                /*MainActivity.dimension=3;
                MainActivity.mode="Easy";*/     //it will not work
                changeMainActivityVariable(3, "Easy");      // it's working fine
                break;
            case R.id.radio1:
                text = "StartGame Pressed";
                changeMainActivityVariable(4, "Medium");
                break;
            default:
                changeMainActivityVariable(3, "Easy");

        }


    }
};

public void changeMainActivityVariable(int dimension, String mode) {
    MainActivity.dimension = dimension;
    MainActivity.mode = mode;
}


}