2012-01-14 84 views
0

我有一个应用程序,当用户按下按钮时,可以查看图像网络。其他屏幕在其他活动中。由于许多图像的数量很多,需要一些时间才能加载,因此我需要一些能够通知用户的信息,他已按下按钮并且必须等待。我尝试使用微调,但我不能为我的XML工作,所以你可以建议我什么?许多Android应用程序只有在加载最终视图之前才会有黑屏,或者例如使按钮更改backgrounf颜色表示用户已按下并且必须等待。我必须把代码放在哪里?按下按钮后等待图像图标

这是我的代码。

b4.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View l) { 
        /*ParnassosTheme();*/ 
        Intent i = new IntentScreen.this,OtherScreen.class); 
        Bundle b = new Bundle(); 
        b.putString("id", id); 
        i.putExtras(b); 
        startActivity(i); 
      } 
      }); 

和我的其他屏幕活动

public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
...do things... 

回答

1

当你加载任务显示在任务开始时进度对话框,并关闭它,当工作完成。注意:它工作正常,但onCreateDialog()已被弃用info here。如果您的目标SDK 11+考虑使用DialogFragment而不是read here

public class OtherScreen extends Activity{ 
    private static final int LOADING_DIALOG_KEY = 0; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 

     // initialization 

     // show loading dialog 
     showDialog(LOADING_DIALOG_KEY); 

     new LoadDataTask().execute(); 
    } 

    @Override 
    protected Dialog onCreateDialog(int id){ 

     ProgressDialog dialog = null; 

     if (id == LOADING_DIALOG_KEY){ 

      dialog = new ProgressDialog(this); 
      dialog.setTitle("Dialog title"); 
      dialog.setMessage("Data loading..."); 
      dialog.setIndeterminate(true); 
      dialog.setCancelable(false); 
     } 

     return dialog; 
    } 

    private final class LoadDataTask extends 
     AsyncTask<Void, Void, Void> 
    { 

     @Override 
     protected Void doInBackground(Void... params) 
     { 
      // do work here 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result) 
     { 
      dismissDialog(LOADING_DIALOG_KEY); 
     } 
    } 
} 
+0

好的我会尝试一下,我会发布。这是什么意思:“注意:它工作正常,但onCreateDialog()已被弃用信息在这里。”我应该在初始部分写任何东西吗? – ghostrider 2012-01-14 18:34:38

+0

弃用谷歌意味着最好不要使用它,因为它不再受到支持,并且及时(3年IIRC)它将从SDK中删除。在初始化部分中,您通常会初始化活动的组件。本部分由您决定,没有额外的工作让ProgressDialog工作。 – Maxim 2012-01-14 18:55:29

+0

好吧,我试过这个,它没有改变任何东西。如果我删除dismissdialogbox它永远加载。所以把它放在一个错误的地方。我应该在哪里?一切完成后? – ghostrider 2012-01-14 19:17:07