【问题标题】:Set toolbar to FragmentActivity将工具栏设置为 FragmentActivity
【发布时间】:2016-05-09 09:30:55
【问题描述】:

我显然尝试过很多类似的问题但没有帮助。

在启动画面之后,我的应用显示了一个带有viewPager 的活动。我将此活动称为FragmentContainer,因为它包含viewPager。现在仅仅因为这个FragmentContainer 扩展了FragmentAcitity 我不能使用setSupportActionBar() 来设置我的自定义工具栏。

fragment_container.xml 是这样的:

<RelativeLayout>

    <com.astuetz.PagerSlidingTabStrip
        android:background="?attr/colorPrimary"
        android:id="@+id/tabs"
        android:layout_below="@id/toolbar_top_fc"
        android:layout_height="?attr/actionBarSize"
        android:layout_width="match_parent"
        android:textColorPrimary="@android:color/white"
        app:pstsIndicatorColor="@color/colorAccent"
        app:pstsPaddingMiddle="true"
        app:pstsTabPaddingLeftRight="24dp" />

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_below="@id/tabs"
        android:layout_height="match_parent"
        android:layout_width="match_parent">

</RelativeLayout>

FragmentContanier.java

public class FragmentContainer extends FragmentActivity {

    ViewPager viewPager = null;

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

        viewPager = (ViewPager) findViewById(R.id.pager);
        FragmentManager fragmentManager = getSupportFragmentManager();
        viewPager.setAdapter(new MyAdapter(fragmentManager));
        viewPager.setCurrentItem(1);

        //Tabs
        PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
        tabs.setViewPager(viewPager);
    }
}

class MyAdapter extends FragmentPagerAdapter {

    public MyAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        Fragment fragment = null;
        if (position == 0) {
            fragment = new FragmentEdit();
        } else if (position == 1) {
            fragment = new FragmentMain();
        } else if (position == 2) {
            fragment = new FragmentSavedMessages();
        }
        return fragment;
    }

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

    @Override
    public CharSequence getPageTitle(int position) {
        CharSequence title = null;
        if (0 == position) {
            title = "Edit";
        } else if (1 == position) {
            title = "Main";
        } else if (2 == position) {
            title = "Save";
        }
        return title;
    }
}

我需要帮助来实现一个自定义的 actionBar。请假装。

我们将不胜感激。 欢迎提出修改建议。

【问题讨论】:

  • 为什么不扩展AppCompatActivity (support.v7) ?另外,你不需要调用setSupportActionBar,你可以实现一个独立的actionbar。有两种方法可以将操作栏添加到您的活动中。
  • @danypata 在学习实现 viewPager 时,有人告诉我扩展 FragmentActivity 以实现 viewPager。阅读您的评论后,我尝试了 AppCompatActivity 并且也可以正常工作。我还是新手,所以对它没有太多的控制权

标签: android android-fragments android-actionbar android-viewpager android-toolbar


【解决方案1】:

片段不能有单独的工具栏。但是你可以根据你的fragment自定义父activity工具栏,在fragmentsethasoptionsmenu(true);的onCreateView中设置,并在

@Override
public void onCreateOptionsMenu(
      Menu menu, MenuInflater inflater) {
   inflater.inflate(R.menu.activity_itemdetail, menu);
}

【讨论】:

  • 你能帮我找出我父母的活动吗?因为这里我只有 FragmentContainer,它不能有工具栏
  • 是的,但首先,通过扩展 AppCompactActivity 并设置 setSupportActionBar 或添加 Xml(这也是一种方式),扩展布局,就像 danypata 所说的那样。然后如果你想为你的片段膨胀不同的菜单项,使用上面的代码。
  • 我在我的 xml 中添加了一个工具栏。我更改为 AppCompactActivity 并通过setSupportActionBar() 设置它。这是工作。但是,如果我添加您的代码,我将看不到菜单。我为FragmentContainer 中的所有片段添加了一个通用菜单,它起作用了。每个片段的个体都不起作用。
  • 你想要这样,对吧?喜欢不同片段的自定义(不同)菜单项,或者您希望所有片段都使用相同的菜单?
  • 得到不同片段的通用菜单。我想要不同片段的不同菜单
猜你喜欢
  • 2016-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-09
  • 2015-01-17
  • 2015-09-26
  • 1970-01-01
  • 2019-05-31
相关资源
最近更新 更多