加载新屏幕时显示对话框

时间:2010-02-25 11:24:59

标签: android dialog

我有一个带有按钮的前屏幕,可打开第二个屏幕。第二个屏幕可能需要几秒钟才能加载,所以我想在加载时显示一个对话框。我的问题是加载第二个屏幕时对话框没有显示,但是当我从第二个页面返回第一页时它会显示。如果我注释掉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;
}

2 个答案:

答案 0 :(得分:0)

恕我直言,我宁愿使用ViewSwitcher而不是对话。 但无论如何我认为你应该在“第二个屏幕”中显示对话框(或切换视图)。只需让你的“第二个”活动开始,然后在onCreate()中显示对话框,同时处理一些内容,并在完成后删除对话框(或切换视图)。 我的建议是使用AsyncTasklike 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);

我尝试了一些其他方法,包括交换内部线程和执行顺序等。没有一种方法可行。上面的代码快速显示对话框(优秀)但随后崩溃。