android - 将 fragment 添加到操作栏中

标签 android android-fragments

我有一个选项卡式 Activity ,我想在第二个选项卡中时将搜索图标添加到操作栏。我不希望它在第一个选项卡中显示。我是否需要将它添加到操作栏,但只在第二个选项卡中以某种方式膨胀它?

Tab2.java

public class Tab2 extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v =inflater.inflate(R.layout.tab_2,container,false);
    return v;
}
}

ViewPagerAdapter.java

public class ViewPagerAdapter extends FragmentStatePagerAdapter {

CharSequence Titles[];
int NumbOfTabs;


public ViewPagerAdapter(FragmentManager fm,CharSequence mTitles[], int mNumbOfTabsumb) {
    super(fm);

    this.Titles = mTitles;
    this.NumbOfTabs = mNumbOfTabsumb;

}


@Override
public Fragment getItem(int position) {

    if(position == 0)
    {
        Tab1 tab1 = new Tab1();
        return tab1;
    }
    else
    {
        Ta2b tab2 = new Tab2();
        return tab2;
    }


}


@Override
public CharSequence getPageTitle(int position) {
    return Titles[position];
}


@Override
public int getCount() {
    return NumbOfTabs;
}
}

菜单启动.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".LaunchActivity">

<item android:id="@+id/action_search"
    android:title="@string/action_search"
    android:src="@drawable/ic_action_search"
    app:showAsAction="ifRoom" />

<item android:id="@+id/action_settings"
    android:title="@string/action_settings"
    android:orderInCategory="100"
    app:showAsAction="never" />

</menu>

启动 Activity .java

public class LaunchActivity extends ActionBarActivity {

Toolbar toolbar;
ViewPager pager;
ViewPagerAdapter adapter;
SlidingTabLayout tabs;
CharSequence Titles[]={"Tab 1","Tab 2"};
int Numboftabs =2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_launch);

    toolbar = (Toolbar) findViewById(R.id.tool_bar);
    setSupportActionBar(toolbar);

    adapter =  new ViewPagerAdapter(getSupportFragmentManager(),Titles,Numboftabs);

    pager = (ViewPager) findViewById(R.id.pager);
    pager.setAdapter(adapter);

    tabs = (SlidingTabLayout) findViewById(R.id.tabs);
    tabs.setDistributeEvenly(true);

    tabs.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() {
        @Override
        public int getIndicatorColor(int position) {
            return getResources().getColor(R.color.white);
        }
    });

    tabs.setViewPager(pager);



}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_launch, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}
}

最佳答案

在 PagerActivity

private MenuItem menuitemMy;

...
..

pager = (ViewPager) findViewById(R.id.pager);
pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    @Override
    public void onPageSelected(int position) {
    
        menuitemMy.setEnabled(true);

        if( position == 0 ) { menuitemMy.setEnabled(false); }

    }

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    }

    @Override
    public void onPageScrollStateChanged(int state) {
        
        
    }
});
    
   


...
..

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    getMenuInflater().inflate(R.menu.optionmenu, menu);
    
    menuitemMy = menu.getItem(0);

    return true;
}

关于android - 将 fragment 添加到操作栏中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30471902/

相关文章:

android - 如何使用 retrofit2 将列表发送到 API

android - 是否可以检测 Android 编解码器是硬件还是软件?

android - 当我设置 minDate 和 maxDate 时 DatePickerDialog 出错

android - 对 retrofit 电话作出 react

google-play - 链接到 android 市场上的应用程序的确切子集

android - 如何在小部件中播放声音 : Android (External Class)

java - Android:使用 LeadingMarginSpan 在 TextView 中显示项目符号列表?

android - 用自身替换 fragment 不会显示任何内容

java - 如何在 onbackpressed() 时刷新 fragment 中的 ListView

android - 嵌套 fragment 生命周期