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