我有一个带有按钮的前屏幕,可打开第二个屏幕。第二个屏幕可能需要几秒钟才能加载,所以我想在加载时显示一个对话框。我的问题是加载第二个屏幕时对话框没有显示,但是当我从第二个页面返回第一页时它会显示。如果我注释掉startActivity
以打开第二页,则对话框显示正常。我对android编程很新 - 我猜它与线程有关。
//code snippet from inside onCreate:
NewGame.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
//does not get displayed before 2nd page opens
showDialog(DIALOG2_KEY);
//shows fine if next 2 lines commented out
Intent i = new Intent(screen1.this, SudukuXL.class);
startActivity(i);
我已经处理了使用onPause()
返回到前面屏幕的对话框。我尝试使用线程将对话框与startActivity
分开,但我没有运气。任何帮助将不胜感激。
我使用Android示例中的代码创建对话框。我在下面提供参考:
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG2_KEY: {
ProgressDialog dialog = new ProgressDialog(this);
dialog.setMessage("Loading...");
dialog.setIndeterminate(true);
dialog.setCancelable(true);
return dialog;
}
}
return null;
}
答案 0 :(得分:0)
恕我直言,我宁愿使用ViewSwitcher而不是对话。
但无论如何我认为你应该在“第二个屏幕”中显示对话框(或切换视图)。只需让你的“第二个”活动开始,然后在onCreate()
中显示对话框,同时处理一些内容,并在完成后删除对话框(或切换视图)。
我的建议是使用AsyncTask或like this在后台做一些事情!
this topic也可以帮助您
答案 1 :(得分:0)
我已经尝试过显示一个对话框,直到xml已经填满,但还没有完全正确。这是我试过的一种方式:
public void onCreate(Bundle icicle)
{
super.onCreate(icicle);
showDialog(DIALOG2_KEY);
new Thread(new Runnable(){
public void run(){
setContentView(R.layout.saved);
}
}).start();
// removeDialog(DIALOG2_KEY);
我尝试了一些其他方法,包括交换内部线程和执行顺序等。没有一种方法可行。上面的代码快速显示对话框(优秀)但随后崩溃。