2013-02-15 4 views
3

В моей деятельности Функция Oncreate() im вызывает AsyncTask. В этом PostExecute () im создает некоторые элементы управления динамической галерей и вызывает ImageAdapterL.notifyDataSetChanged();. но Im получает исключение Null Pointer.Как обновить активность после создания динамических элементов управления в android

Мне нужно обновить активность, не вызывая Oncreate() [B'coz в Oncreate only im call async Task].

 @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_home_page); 

     new testAynscTask().execute(); 
    } 
    private class testAynscTask extends AsyncTask<Void, Void, Void>{ 

     @Override 
     protected Void doInBackground(Void... params) { 
      processTogetImages(); 
      // TODO Auto-generated method stub 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result) { 
     super.onPostExecute(result); 
     CreateDynamicGallery(); 
      aImageAdapterL.notifyDataSetChanged(); 
     } 
    } 
public void CreateDynamicGallery(){ 
     CategoryGalleryLayout = (LinearLayout) findViewById(R.id.linearLayout1); 
     Gallery g = new Gallery(getApplicationContext()); 
     GalleryLayout.addView(g,new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
      g.setSpacing(15); 


     aImageAdapterL = new ImageAdapter(getApplicationContext()); 
     g.setAdapter(aImageAdapterL); 
     g[positionP].setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(@SuppressWarnings("rawtypes") AdapterView parent, View v, int position, long id) { 
       Toast.makeText(getBaseContext(), "" + position, Toast.LENGTH_SHORT).show(); 
      } 
     }); 



    } 

} 

Заранее спасибо

+1

Опубликовать код, возможно? – Rajesh

+0

@ Rajesh проверить мой обновленный вопрос с кодом – Vignesh

+0

Где вы создаете 'aImageAdapterL'? Также выведите свой вывод журнала. – Rajesh

ответ

0

мне кажется, что вы на самом деле не обновляя деятельность, только изображения в адаптере. Я бы предложил вызвать createDynamicGallery из onCreate с нулевым адаптером (хорошо написанный вид адаптера должен обрабатывать нулевой адаптер, рассматривая его как пустой), затем загружать изображения и заполнять реальный адаптер (или новый адаптер) изображениями. Установка адаптера галереи на реальный адаптер должна привести к обновлению галереи, и все будет хорошо.

В качестве дополнительного наблюдения вы можете посмотреть, как использовать asynctaskloader с помощью loadermanager, чтобы помочь вам правильно разобраться. С вашим текущим кодом, если задача async занимает много времени, может быть возможно получить ошибки (вероятные «разрушенные действия») или состояние гонки с двумя асинхронными задачами, пытающимися загрузить изображения после поворота экрана.

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