调用在另一个类中更改的int

时间:2012-08-28 17:39:16

标签: java android class int call

这是问题,我有一个类(比如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来运行它的所有组件。

2 个答案:

答案 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值。