为什么在通过FragmentTransaction添加片段后调用OnTabSelected

时间:2014-10-15 00:09:53

标签: android fragmenttransaction

所以我有这段代码:

public void openSearch() {
        FragmentTransaction t = getSupportFragmentManager().beginTransaction();
        if(mSearchFragment == null) {
                    mSearchFragment = SearchFragment.newInstance("Search");
                    t.add(android.R.id.content,mSearchFragment);
        } else {t.show(mSearchFragment); }
        t.commit();
}

我从这里打电话给openSearch:

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle presses on the action bar items
        boolean returnValue = false;
        switch (item.getItemId()) {
        case R.id.action_search:
            openSearch();
        } 
    }

在openSearch()运行之后..立即调用onTabSelected。为什么是这样?

@Override
public void onTabSelected(ActionBar.Tab tab,
        FragmentTransaction ft) {

如果您需要mroe信息,请告诉我。我只包括我认为与减少喋喋不休相关的部分。甚至更疯狂的是,我第一次运行这个onTabSelected时会被选中,但是如果我导航我的应用程序并再次运行openSearch,那么onOptionsItemSelected将不会再次被调用。它只是初始时间

编辑: 这是主要的内容视图,我只是为viewPager提供片段。每个片段的布局都是相同的,一个带有一个LinearLayout子元素的FrameLayout。

<LinearLayout
    android:id="@+id/search_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@android:color/holo_orange_dark"
    android:visibility="gone" >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="This is the search view" />
</LinearLayout>

<android.support.v4.view.ViewPager
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

0 个答案:

没有答案