Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在另一种方法中使用变量?_Java_Android - Fatal编程技术网

Java 如何在另一种方法中使用变量?

Java 如何在另一种方法中使用变量?,java,android,Java,Android,我对变量int myInt有一个基本问题。在void aktualizujRynek()中,我为myInt赋值2。在void setImage()中,变量的值为0,而不是2。为什么? public class MainActivity extends AppCompatActivity { int myInt; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanc

我对变量int myInt有一个基本问题。在void aktualizujRynek()中,我为myInt赋值2。在void setImage()中,变量的值为0,而不是2。为什么?

public class MainActivity extends AppCompatActivity {

int myInt;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

aktualizujRynek();
setImage();

}


public void aktualizujRynek(){
final Thread thread1 = new Thread(new Runnable() {
myInt = 2;
});
thread1.start();
}


public void setImage(){
if (myInt ==2){  
//do something
}
}


}

您应该重写
run()
方法,并将代码放入此方法中。从
run()
调用
setImage()
,以获得正确的结果

试试这个:

public void aktualizujRynek(){
    final Thread thread1 = new Thread(new Runnable() {
        @Override
        public void run() {
            myInt  = 2;
            setImage();
        }
    });

    thread1.start();
}

希望这能起作用~

我想使用voidsetImage()设置我的映像,如果(myInt1==2&&myInt2==3)满足两个条件时。但当我在void setImage中使用myInt1和myInt2时,它们的值为0,尽管我指定了值2和3

public class MainActivity extends AppCompatActivity {

int myInt1;
int myInt2;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

aktualizujRynek();
aktualizujPark();
setImage();

}


public void aktualizujRynek(){
final Thread thread1 = new Thread(new Runnable() {
    @Override
    public void run() {
        myInt1  = 2; // in my real code i take this value from HTTP response

    }
});

thread1.start();
}

public void aktualizujPark(){
final Thread thread2 = new Thread(new Runnable() {
    @Override
    public void run() {
        myInt2  = 3; // in my real code i take this value from HTTP response

    }
});

thread2.start();
}


public void setImage(){
if (myInt1 == 2  && myInt2 == 3){  
//do something
}
}


}

现在还不清楚你能做到什么。。。使用变量时,它的值为0。如果在线程结束后使用值,则应使用回调。AsyncTask已经有了它,而且它在ui线程上被回调。。。显然,在onCreate中等待线程结束是一个糟糕的想法…所以我不能在线程中访问myInt?问题是在执行另一个线程时,您何时可以在当前线程中访问它。。。当变量发生变化时,您需要以某种方式从另一个线程通知当前线程…感谢Ferdous Ahamed!但是,当我在void setImage()中使用myInt时,它仍然是0。因为在调用run()方法之前会调用setImage(),在该方法中将myInt更改为2。必须从run()调用setImage()才能得到正确的结果。看到我的最新答案很高兴知道。如果我的答案有帮助,请将其标记为已接受答案,并在可能的情况下进行放弃投票。提前谢谢:)@FerdousAhamed你知道怎么做吗?