2013-03-18 2 views
0

Мои приложения имеют счетчик в основном действии, а контент загружается из sqlite. И мои приложения предоставляют возможность загрузки для загрузки последней информации с сервера. Асинхронная задача загрузки находится в другом классе.Обновить spinner/view после выполнения асинхронной задачи в другом классе

Итак, мой вопрос в том, как я могу обновить действие майнинга активности, как только процесс загрузки будет завершен?

+0

передать контекст вашей активности на вашу загрузку класса –

+0

обратитесь к mainactivity снова после выполнения загрузки завершается – DeltaCap

+0

активность акта = (активность) контекст; ((LinearLayout) act.findViewById (R.id.spinstore)). SetVisibility (View.INVISIBLE); Я использую это, но он разбился при вызове этой строки – tsohtan

ответ

1

Попробуйте вот так.

1) Создание интерфейса обратного вызова

public interface DownloadCompleted { 
     // Define your Data type to which you want to store data after AsycTask completion 
     public void onTaskComplete(String result); 
    } 

2) AsycTask

public class UploadAsyncTask extends 
      AsyncTask<String, Void, String> { 
     private ProgressDialog Dialog; 
     String response = ""; 
     Activity _context; 
     private DownloadCompleted callback; 

     public UploadAsyncTask (Activity _context) { 
      this._context = _context; 
      this.callback = (DownloadCompleted) _context; 
     } 

     @Override 
     protected void onPreExecute() { 
      Dialog = new ProgressDialog(_context); 
      Dialog.setMessage("Loading..."); 
      Dialog.show(); 

     } 

     @Override 
     protected String doInBackground(String... urls) { 
      try { 
       String url= urls[0]; 
       //Do your operation 
      } catch (Exception e) { 
      } 
      return response ; 

     } 

     @Override 
     protected void onPostExecute(String result) { 
      Dialog.dismiss(); 
      callback.onTaskComplete(result); 

     } 

    } 

3) Реализовать интерфейс в вашей вызывающую активность

public class YourActivity extends Activity implements DownloadCompleted { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     new UploadAsyncTask (this).execute(YOUR URL String); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.rss_reader, menu); 
     return true; 
    } 

    @Override 
    public void onTaskComplete(String result) { 
     // Refresh your view here 
       // use result data as after completion AsycTask 
    } 

} 

Для получения дополнительной помощи и исходного кода, пожалуйста, перейдите по ссылке ниже.

http://amitandroid.blogspot.in/2013/02/android-rssfeed-with-async-task-example.html

+0

Даже я нашел свой собственный ответ, я думаю, что ваш лучше. Для тех, кто интересовался моим. protected void onPostExecute (String [] results) { \t progress.dismiss(); \t Контекст act = (Activity); \t Spinner mspinstore; \t \t mspinstore = (Spinner) act.findViewById (R.id.spinstore); // сделаем остальную часть вашего кода здесь} – tsohtan

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