如何刷新button点击片段标签内容

我真的很新的Android,我正在实施一个小的项目,我有一个Drupal网站的消息。 这个应用程序有3个选项卡,每个选项卡都有一个特定内容的文章列表。 文章的列表是通过在linearlayout中排列的textviews和imageviews创build的。 当我点击标题时,文章正在打开的细节。 这些文章是通过HTTP POST和ViewJSON模块从Drupal站点加载的。 制表符是使用FragmentActivity和TabHost创build的。 一切正常,工作正常,直到这里。

我的问题是,我想做一个刷新button,将其放在标签上,当我按下它时,文章列表必须刷新或重新加载,并保持当前标签打开。 我试图replace标签片段内容并重新打开它,但是当我点击一个文章的标题打开它时,标签内容保留在所有片段下的堆栈中。 我提到,当我点击文章的标题时,一个新的片段正在打开。 我发了一篇文章的标识作为参数,并在同一个片段中打开文章的内容。

我正在尝试这个代码,但没有成功。

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(显示从表2的文章列表),按刷新button,打开一篇文章,按下移动设备的后退button,并显示我的表2的内容。 现在,我在tab1上input(并显示tab1中的文章列表),从tab1列表中打开一篇文章,显示我需要的内容,然后按下手机上的后退button。 在这一刻显示的tab2内容(文章列表formstab2从我按下刷新button。)。

打开我使用的文章的详细信息:

  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 "如何刷新button点击片段标签内容"

要刷新片段的内容,可以保留对片段的引用,并在该片段中调用公共(例如) 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> 

现在,当您创build选项卡片段(如PupulareFragment)时,请使用pupulareFragment实例variables来存储片段。 所以它在刷新buttononClick方法中可用。

这样你刷新时不会replace/创build任何新的碎片。 所以去de文章的细节活动回去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(); } 

试试这个,标签下的所有东西都会被再次执行。