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

Java 更改另一个类中Mainactivity变量的值,java,android,string,android-activity,scope,Java,Android,String,Android Activity,Scope,我不想在副本中进行更改,相反,我需要的是在变量中作为引用进行更改,这样更改应该反映在mainactivity类中 在我的应用程序中,我在mainactivity类中将一个全局变量“key”声明为public static,我制作了一个按钮“Reset key”,该按钮可用于其他活动 在该活动中,我想更改主活动的键值。我使用的是String key1=MainActivity.key ,之后,我对key1变量进行了更改,但是在更改变量之后,当我返回到主活动时,key变量仍然是相同的 因此,我希望将

我不想在副本中进行更改,相反,我需要的是在变量中作为引用进行更改,这样更改应该反映在
mainactivity
类中

在我的应用程序中,我在
mainactivity
类中将一个全局变量“key”声明为public static,我制作了一个按钮“Reset key”,该按钮可用于其他活动

在该活动中,我想更改主活动的键值。我使用的是
String key1=MainActivity.key
,之后,我对key1变量进行了更改,但是在更改变量之后,当我返回到主活动时,key变量仍然是相同的


因此,我希望将更改作为引用,而不是对象或变量的副本。

您可以创建静态属性:

private static String key1;
public void setKey(String newKey){
     key1 = newKey;
} 
在另一个活动调用中:

MainActivity.setKey(NewKey);

首先更改键1的值,然后将此值分配给MainActivityKey变量,如下所示

MainActivity.key = key1;

对于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;
}


}