2012-01-14 2 views
0

У меня есть приложение, которое, когда пользователь нажимает кнопку, может просматривать изображения в паутине. Эти другие экраны находятся в других действиях. Поскольку для многих изображений много kbs, и для загрузки требуется некоторое время, мне нужно что-то, что сообщит пользователю, что он нажал кнопку и должен ждать. Я пробовал использовать spinner, но я не мог заставить его работать для моего xml, так что вы можете предложить мне что-нибудь еще? Многие приложения для Android имеют черный экран до тех пор, пока не загрузится окончательный вид, или, например, не измените цвет кнопки на кнопке, чтобы указать, что пользователь нажал ее и должен ждать. А где в коде я должен его разместить?Значок изображения для ожидания после нажатия кнопки

Вот мой код.

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

+0

устаревшим Google означает, что лучше не использовать его, потому что он больше не поддерживается и со временем (3 года IIRC) он будет удален из SDK. В разделе инициализации вы обычно инициализируете компоненты активности. Этот раздел зависит от вас, ничего лишнего для работы ProgressDialog. – Maxim

+0

Хорошо, я пробовал это, и он ничего не меняет. если я удаляю утилиту offdialogbox, она загружается навсегда. Поэтому thnk помещает его в неправильное место. Где я должен? После того, как все закончится? – ghostrider

Смежные вопросы