当我举杯时应用程序崩溃,但我不明白为什么。这是代码:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mvc = (Button) findViewById(R.id.button1);
mvc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(),"START!" ,Toast.LENGTH_SHORT).show();
new Thread(new Runnable() {
public void run() {
long startTime = System.currentTimeMillis();
while( startTime + 5000 > System.currentTimeMillis())
{
// }
// while (progressStatus < 1000) {
if (k > progressStatus){
progressStatus = k;
}
else {
progressStatus = progressStatus;
}
// Update the progress bar and display the current value in the text view
handler.post(new Runnable() {
public void run() {
progressBar.setProgress(progressStatus);
}
});
try {
// Sleep for 10 milliseconds. Just to display the progress slowly
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Toast mioToast = Toast.makeText(BluetoothChat.this,
"STOP!",
Toast.LENGTH_LONG);
mioToast.show();
}
}).start();
}
});
第一个toast完美地执行它但是在第二个,其中有“STOP”字样,应用程序崩溃了。怎么会这样? 谢谢。
答案 0 :(得分:1)
您正尝试在后台主题中显示Toast
。只能从UI线程修改UI,这就是崩溃应用程序的原因。
请改用:
handler.post(new Runnable() {
public void run() {
Toast.makeText(BluetoothChat.this,
"STOP!",
Toast.LENGTH_LONG).show();
}
};
这将在UI线程上运行,因此不会使应用程序崩溃。
答案 1 :(得分:0)
尝试将“getApplicationContext()”替换为“this”或“your_class_name.this”