我在操作栏中有3个标签,每个标签都与一个片段相关联。每个片段都有一个ListView,它绑定到SimpleCursorAdapter。单击ListView项时,它会导航到详细活动,并且有一个后退按钮可以返回。我希望在删除详细活动中的项目时,ListView会更新。
问题是(假设3个标签是A,B,C):
1)如果我从A中选择项目,然后转到详细信息页面,请删除此项目,然后返回A,选项卡A中的ListView更新,这是我所期望的。
2)但如果我选择标签A,选择B,再次选择A,然后重复1)中的步骤,ListView不会更新。
我使用以下代码导航回详细活动:
getFragmentManager().popBackStackImmediate();
有我的TabListener:
public class TabListener<T extends Fragment> implements ActionBar.TabListener {
public TabListener(Activity activity, String tag, Class<T> clz) {
activity_ = activity;
tag_ = tag;
class_ = clz;
}
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction transaction) {
if (fragment_ == null) {
fragment_ = Fragment.instantiate(activity_, class_.getName());
transaction.add(android.R.id.content, fragment_, tag_);
} else {
transaction.add(android.R.id.content, fragment_, tag_);
}
}
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction transaction) {
if (fragment_ != null) {
transaction.remove(fragment_);
}
}
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction transaction) {
// User selected the already selected tab. Usually do nothing.
}
private Fragment fragment_;
private final Activity activity_;
private final String tag_;
private final Class<T> class_;
}
如果您需要更多代码,请告诉我。
答案 0 :(得分:0)
我解决了。
将TabListener更改为:
public class TabListener<T extends Fragment> implements ActionBar.TabListener {
public TabListener(Activity activity, String tag, Class<T> clz) {
activity_ = activity;
tag_ = tag;
class_ = clz;
}
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction transaction) {
if (fragment_ == null) {
fragment_ = Fragment.instantiate(activity_, class_.getName());
transaction.add(android.R.id.content, fragment_, tag_);
} else {
// transaction.add(android.R.id.content, fragment_, tag_);
transaction.show(fragment_);
}
}
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction transaction) {
if (fragment_ != null) {
transaction.hide(fragment_);
}
}
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction transaction) {
if (fragment_ != null) {
transaction.hide(fragment_);
transaction.show(fragment_);
}
}
private Fragment fragment_;
private final Activity activity_;
private final String tag_;
private final Class<T> class_;
}
在Fragment类的onResume事件中,重新选择选项卡。
public void onResume() {
super.onResume();
getActivity().getActionBar().setSelectedNavigationItem(getActivity().getActionBar().getSelectedNavigationIndex());
}