3

タブが変更されたときに1つのタブの表示を変更する必要があるアプリケーションに取り組んでいます。私はそれを次のように使用しています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();

        }

    }

}

}

4

1 に答える 1

0

android:clickable="true"新しいタブのルート レイアウトに追加します。クリック イベントが背後のレイアウトを通過するのを防ぎます。

于 2013-03-18T10:53:42.643 に答える