我是Android领域的新手,正在实现一个小项目,其中我从一个Drupal网站获取新闻。这个应用程序有3个选项卡,每个选项卡都有一些具体内容的文章列表。文章列表是由线性布局中排列的文本视图和图像视图创建的。当我点击标题时,文章会以详细信息的形式打开。这些文章是通过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();
}
}
});
更准确地说,我进入应用程序后,按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();
}
});
提前感谢您的帮助!