mr.*_*sso 10 eclipse tabs android refresh android-fragments
我是Android的新手,我正在实施一个小项目,我从一个Drupal网站获得新闻.此应用程序有3个选项卡,每个选项卡都有一个包含特定内容的文章列表.文章列表由在linearlayout中排列的textviews和imageview创建.当我点击标题时,文章正在打开详细信息.这些文章是通过HTTP POST和ViewJSON模块从Drupal站点加载的.使用FragmentActivity和TabHost创建选项卡.一切都很好,直到这里工作正常.
我的问题是我想制作一个刷新按钮,放在标签上,当我按下它时,文章列表必须刷新或重新加载并保持当前标签打开.我试图替换标签片段内容并重新打开它,但是当我点击一篇文章的标题打开它时,标签内容仍保留在所有片段下的堆栈中.我提到当我点击文章标题时,会打开一个新片段.我发送了一篇文章的id作为论据,并在同一篇文章中打开了文章的内容.
我尝试使用此代码但没有成功.
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();
}
Run Code Online (Sandbox Code Playgroud)
更确切地说,我进入应用程序,按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();
}
});
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助!
要刷新片段的内容,您可以保留对片段的引用,并在该片段中调用公共(例如)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>
Run Code Online (Sandbox Code Playgroud)
现在,当您创建选项卡片段(如PupulareFragment)时,请使用pupulareFragment实例变量来存储片段.因此它可以在onClick方法的刷新按钮中使用.
这样,您在刷新时不会替换/创建任何新片段.因此,在参加de article details活动之后返回tabActivity,可能也会正常工作.
| 归档时间: |
|
| 查看次数: |
69864 次 |
| 最近记录: |