2016-04-11 16 views
-1

Benim android kod şöyle görünür: yazdırırJava/android kodundaki değişkenlerin kapsamı.

boolean b; 
Context context; 
//inside onCreate method: 
b =false; 
context= getApplicationContext(); 

//outside onCreate method 
public void c(){ 

new Thread(new Runnable(){ 

boolean d = false; 

public void run(){ 

//inside a try/catch block: 
try{ 

d = true; 
b =d; // b was defined inside onCreate 

}catch{ 

} 

} 
}).start(); 

if(b)Toast.makeText(context,"hello whale",Toast.LENGTH_LONG).show(); 
else Toast.makeText(context,"hello Lion",Toast.LENGTH_LONG).show(); 


} //end of method c 

tost mesajı "Merhaba Aslan" dir. B try/catch bloğu içinde neden true olarak ayarlandığını bilmiyorum. Neyin eksik olduğunu bilmiyorum.

Biliyorum basit bir şey, ama ne olduğunu bilmiyorum. Telefon ekranına yazdırmak için "merhaba balina" ihtiyacım var.

Try/catch bloğunun deneme parçası, localhost veritabanımın çıktı akışlı bir yazımına sahip olduğum için çalıştırıldığını biliyorum. Çıkış akımı tarafından yazılması gereken tüm alanlar. Herhangi bir tavsiye

+1

B sorgulamadan önce doğru olarak ayarlanmışsa, kesme noktaları ile kontrol edin. – F43nd1r

+0

Kesme noktaları ne demek istiyorsun? @ F43nd1r –

+0

Kesme noktaları, kodun yürütülmesini duraklatmaya izin verir. En sevdiğiniz arama motoru ile bol miktarda bulabilirsiniz. – F43nd1r

cevap

0

için

sayesinde çalıştırılabilir kod Tost blok çalışmasından önce yürütme yapılacaktır hiçbir garantisi yoktur. Bu sadece iş parçacığının Tost bloğundan önce "başlatıldığı" anlamına gelir. İş parçacığına gerçekten ihtiyacınız varsa (Bu işlemin, birden fazla iş parçacığıyla bir şeyi başarmaya çalıştığınız bir şeyin proxy kodu olduğunu varsayalım) iş parçacığı üzerinde birleştirme yöntemini kullanın. Tek bir iş parçacığı kullanmak için bir neden düşünemiyorum.

new Thread(new Runnable(){ 

boolean d = false; 

public void run(){ 

//inside a try/catch block: 
try{ 

d = true; 
b =d; // b was defined inside onCreate 

}catch{ 

} 
} 
}).start().join();