这是问题,我有一个类(比如class1),根据你选择的按钮,int x被改为1-6。我需要能够在类2中调用此int,但它不会读取新的int x值,它只读取默认值。
public class class1 extends Activity {
private view btn1;
private view btn2;
//...
private view btn6;
public int x = 1;
btn1.setOnClickListener(sbtn1Listener);
//...
btn2.setOnClickListener(sbtn2Listener);
private View.OnClickListener sbtn1Listener = new View.OnClickListener() {
public void onClick(View v) {
x = 1;
}
};
private View.OnClickListener sbtn2Listener = new View.OnClickListener() {
public void onClick(View v) {
x = 2;
}
};
//...
因此按钮在该程序中运行良好,还有更多内容,但我现在就把它留在那里。然后class2需要读取新值。
public class class2 extends BaseObject {
public int y = 1;
class1 a = new class1();
a.getx();
y = a;
if (y == 1) {
}else if (y == 2){
//...
不是从class1读取新的x值,而是只读取默认值为1。
另请注意,我无法更改class2的扩展部分,因为它需要BaseObject来运行它的所有组件。
答案 0 :(得分:2)
这是因为class2正在创建一个新的1类实例。
您需要做的是访问现有的1类实例。
如果您将第二类全球化,然后通过第1类设置它,您将能够访问它。
public class class1 extends Activity {
private view btn1;
private view btn2;
//...
private view btn6;
public int x = 1;
public class2 cls2; // SET GLOBAL. Needs initialising somewhere relevant.
btn1.setOnClickListener(sbtn1Listener);
//...
btn2.setOnClickListener(sbtn2Listener);
private View.OnClickListener sbtn1Listener = new View.OnClickListener() {
public void onClick(View v) {
x = 1;
cls2.x = 1; // Or use setter methods in class 2.
}
};
private View.OnClickListener sbtn2Listener = new View.OnClickListener() {
public void onClick(View v) {
x = 2;
cls2.x = 2;
}
};
然后在第2课中有一个名为x的公共变量。 (您在点击听众中设置的那个。
重要提示:无论何时调用类2,请确保将其指定为全局实例,而不是新实例。
答案 1 :(得分:2)
制作int x a static variable.
<强>例如强>
public static int x = 1;
现在从另一个类中访问它......
int y = class1.x;
//这将反映更改的x值。