gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 03:43:21 25 4
gpt4 key购买 nike

这就是问题所在,我有一个类(比如说 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 是运行其所有组件所必需的。

最佳答案

那是因为 class2 正在创建 class 1 的新实例。

您需要做的是访问已经存在的类 1 的实例。

如果您将 class 2 全局化,然后通过 class 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 的公共(public)变量。 (您在点击监听器中设置的那个。

重要提示:无论您在哪里调用类 2,请确保将其指定为全局实例,而不是新实例。

关于java - 调用在另一个类中更改的 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12164605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com