7
次のサンプルコードを確認してください。トーストメッセージは表示されますが、進行状況ダイアログは表示されません。どうして?ProgressDialog.dismiss()が機能していません
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.Toast;
public class LoadExamActivity extends Activity implements Runnable{
ProgressDialog pd;
Handler Finished = new Handler(){
@Override
public void handleMessage(Message msg){
Toast.makeText(getApplicationContext(), "DONE!", Toast.LENGTH_SHORT).show();
pd.dismiss();
}
};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.exam);
Toast.makeText(this, "START!", Toast.LENGTH_SHORT).show();
pd = new ProgressDialog(this);
pd.show(this, "Waiting...", "Please wait five seconds...");
Thread th = new Thread(this);
th.start();
}
public void run() {
//To change body of implemented methods use File | Settings | File Templates.
for (int i = 0; i < 5; i++)
{
try
{
Thread.sleep(1000);
}catch(Exception e){}
}
Finished.sendEmptyMessage(0);
}
}
5秒後、私はどちらかprogressdialogを消す習慣と私ドン)(「DONE」のメッセージが表示されますがprogressdialogが却下されていないと私は右THR pd.showの下pd.dismiss()を入れても、なぜこのことが起こっているのか分かりません。それが私を狂わせてしまいます!
働いています!あなたは警告について正しいと私はそれに気付かなかった。しかし、私はなぜIDEが私に言っているのか理解できません.show()メソッドは何も返さない(void)、そして結局ProgressDialogのインスタンスを返しますか? – Davidoff
はい、これは動作します。 show()はProgressDialogのインスタンスを返しますが、newキーワードを使用しても同じインスタンスが取得されます。一方、上記の方法を使用すると、解読コードが機能し、一方、新しいキーワードを使用すると、コードは機能しませんでした。 – Khushboo
大きな説明をありがとうございます。 – suku