我正在开发一个应用程序,需要在选项卡切换时更改一个选项卡的视图。我使用 OnTabChangedListener
来实现它。我已经成功替换了视图。但是当我切换到其他选项卡时,先前的视图仍然可以在后台响应点击事件。为什么会这样呢?新的视图显示在前方,但是如果我点击上一个视图控件所在的任何地方,还是会执行相关功能。我不知道问题出在哪里,请帮助我解决。谢谢!
public class FragmentTabs extends FragmentActivity implements OnTabChangeListener {
private FragmentTabHost mTabHost;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.fragment_tabs);
mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
mTabHost.setOnTabChangedListener(this);
if (Database.getSharedObject(getApplicationContext()).getAppSettings().getListView() == 1) {
mTabHost.addTab(mTabHost.newTabSpec("home").setIndicator("", getResources().getDrawable(R.drawable.home_tab)), HomeFragment.class, null);
} else {
mTabHost.addTab(mTabHost.newTabSpec("home").setIndicator("", getResources().getDrawable(R.drawable.home_tab)), CalendarViewFragment.class, null);
}
mTabHost.addTab(mTabHost.newTabSpec("groups").setIndicator("", getResources().getDrawable(R.drawable.groups_tab)), GroupFragment.class, null);
mTabHost.addTab(mTabHost.newTabSpec("templates").setIndicator("", getResources().getDrawable(R.drawable.templates_tab)), TemplateFragment.class, null);
mTabHost.addTab(mTabHost.newTabSpec("settings").setIndicator("", getResource
mTabHost.getTabWidget().getChildAt(0).getLayoutParams().height = height;
mTabHost.getTabWidget().getChildAt(1).getLayoutParams().height = height;
mTabHost.getTabWidget().getChildAt(2).getLayoutParams().height = height;
mTabHost.getTabWidget().getChildAt(3).getLayoutParams().height = height;
// Database.getSharedObject(getApplicationContext());
mTabHost.setCurrentTab(0);
}
@Override
protected void onResume() {
super.onResume();
}
@Override
public void onTabChanged(String arg0) {
mTabHost.getCurrentTabView().invalidate();
if (mTabHost.getCurrentTab() == 0) {
if (Database.getSharedObject(getApplicationContext()).getAppSettings().getListView() == 1) {
HomeFragment homeFragment = new HomeFragment();
mTabHost.getCurrentTabView().invalidate();
getSupportFragmentManager().beginTransaction().replace(R.id.realtabcontent, homeFragment).addToBackStack(null).commit();
} else {
CalendarViewFragment calendarViewFragment = new CalendarViewFragment();
mTabHost.getCurrentTabView().invalidate();
getSupportFragmentManager().beginTransaction().replace(R.id.realtabcontent, calendarViewFragment).addToBackStack(null).commit();
}
}
}
}
android.R.id.content
有关,但我还没有测试过,所以可能根本不是问题。你在过去的三个星期中有任何进展吗? - dcowsetContentView
有关,而在开发者文档中它们没有这样做(无论如何,都要使用ActionBar的OnTabChangedListener
)。我认为使用TabHost和我使用ActionBar不应该有任何影响(我打赌ActionBar只是使用一个TabHost)。也许问题在于FragmentManager。 - dcow