Как обновить содержимое вкладки фрагментов при нажатии кнопки

Я действительно новичок в Android, и я реализую небольшой проект, в котором у меня есть новости с одного сайта Drupal. Это приложение имеет 3 вкладки, и на каждой вкладке есть список статей с определенным контентом. Список статей создается текстовыми изображениями и изображениями, расположенными в linearlayout. Когда я нажимаю на заголовок, статья открывается с подробностями. Эти статьи загружаются с сайта Drupal через HTTP POST и ViewJSON. Вкладки создаются с помощью FragmentActivity и TabHost. Все в порядке и прекрасно работает, пока здесь.

Моя проблема в том, что я хочу сделать одну кнопку обновления, чтобы ее можно было поместить над вкладками, и когда я ее нажимаю, список статей должен обновляться или перезагружаться и сохранять текущую вкладку открытой. Я попытался заменить содержимое фрагмента вкладок и снова открыть его, но когда я нажимаю на заголовок одной статьи, чтобы открыть его, содержимое вкладки остается в стеке под всеми фрагментами. Я упоминаю, что когда я нажимаю на заголовок статьи, открывается один новый фрагмент. Я отправил идентификатор статей в качестве аргумента, и в том же фрагменте я открываю содержимое статьи.

Я пытался с этим кодом, но не добился успеха.

Button btn_refresh = (Button) findViewById(R.id.btn_refresh); btn_refresh.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { String current_tab = mTabHost.getCurrentTabTag(); if(current_tab.contains("POPULARE")){ Fragment f; f = new PopulareActivity(); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.tot,f); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); ft.commit(); } if(current_tab.contains("RECOMANDATE")){ Fragment f; f = new RecomandateActivity(); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.tot,f); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); ft.commit(); } 

Точнее, я вхожу в приложение, нажмите Tab2 (покажите список статей из tab2), нажмите кнопку обновления, откройте одну статью, нажмите кнопку возврата на мобильном устройстве и покажите мне содержимое tab2. Теперь я вхожу на tab1 (и показываю список статей из tab1), откройте одну статью из списка tab1, покажите мне, что мне нужно, и нажмите кнопку «Назад» с мобильного. В этот момент показано содержимое tab2 (список статей формирует tab2, откуда я нажал кнопку обновления).

Чтобы открыть детали статьи, я использую:

  tv.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Fragment f; f = new DetaliiActivity(); Bundle data = new Bundle(); data.putInt("id", nid); f.setArguments(data); FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.replace(R.id.tot,f); ft.addToBackStack(null); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); ft.commit(); } }); 

Заранее благодарим за помощь!

Solutions Collecting From Web of "Как обновить содержимое вкладки фрагментов при нажатии кнопки"

Чтобы обновить содержимое фрагмента, вы можете сохранить ссылку на фрагмент и вызвать общедоступный (например refresh() метод refresh() в этом фрагменте. Пример:

 public class ArticleTabFragmentActivity extends FragmentActivity{ private PopulareFragment populareFragment; private RecomandateFragment recomandateFragment; <code> private void bindView(){ Button btn_refresh = (Button) findViewById(R.id.btn_refresh); btn_refresh.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { String current_tab = mTabHost.getCurrentTabTag(); if(current_tab.contains("POPULARE")){ populareFragment.refresh(); } else if(current_tab.contains("RECOMANDATE")){ recomandateFragment.refresh(); } }); } } public class PopulareFragment extends Fragment{ public void refresh(){ <refresh the contents of the fragment> } } <Same for other fragment> 

Теперь, когда вы создаете фрагмент вкладки, например PupulareFragment, используйте экземпляр экземпляра pupulareFragment для хранения фрагмента. Таким образом, он доступен в кнопке обновления onClick.

Таким образом, вы не заменяете / не создаете какие-либо новые фрагменты при обновлении. Поэтому, возвращаясь к tabActivity после перехода на статью подробности деятельности, вероятно, будет работать нормально.

 FragmentTabHost tabHost3 = (FragmentTabHost) findViewById(android.R.id.tabhost); String current_tab = tabHost3.getCurrentTabTag(); if (current_tab.equals("abc")) { ClassFragment ni = (ClassFragment) getSupportFragmentManager().findFragmentByTag("abc"); ni.refresh(); } 

Попробуйте это, все, что присутствует в закладке, будет выполнено снова.