如何在FragmentActivity上设置工具栏?

我想在我的活动上设置工具栏 ,扩展FragmentActivity 。 我知道使用setSuppoertActionBar(toolbar)方法我们扩展了AppCompatActivity而不是FragmentActivity但是我重写了onMenuItemSelected(int featureId, MenuItem item)方法,这是AppCompatActivity最终方法,并且最终方法无法覆盖。 所以我限制扩展FragmentActivity

这是我的代码:

 public class MainActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar); setSupportActionBar(toolbar); -> error is here } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { switch(item.getItemId()){ case R.id.action_search: onSearchRequested(); break; } return super.onMenuItemSelected(featureId, item); } 

我看到了许多与该问题相关的答案,但每个人都说扩展了AppCompatActivity而不是FragmentActivity但我想设置工具栏以及覆盖onMenuItemSelected(int featureId, MenuItem item)方法。

我该怎么办,请帮忙。

当你使用NavigationDrawer 使用这个 时,这个东西很好 : –

  toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayShowTitleEnabled(false); 

然后根据onNavigationItemSelected不同标题的不同片段设置工具栏标题 : –

 @Override public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here. sfm = getSupportFragmentManager(); Fragment fragment = new Fragment(); int id = item.getItemId(); if (id == R.id.nav_id) { fragment = new YourFragment(); toolbar.setTitle("SET TOOLBAR NAME"); }else if (id == R.id.nav_id2) { fragment = new YourFragment(); toolbar.setTitle("SET TOOLBAR NAME"); } 

对于单个片段,首先像这样自定义style.xml : –

  

然后应用到您的自定义toolbar : –

  // ...........  

您还可以创建自己的toolbar

首先设置主题以扩展Theme.AppCompat.Light.NoActionBar

  

请记住应用主题:

 @Override protected void onCreate(Bundle savedInstanceState) { this.setTheme(R.style.style_1); // ... } 

然后在Activity的xml中,您可以设置自己的自定义toolbar

  

其中@layout/my_toolbar可能如下所示:

    
 First set style as  then Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); ActionBar actionBar = getSupportActionBar(); actionBar.setTitle("Home"); 

您应该从AppCompatActivity扩展Activity,因为这包括对Fragments和Toolbar的支持。 然后覆盖

onCreateOptionsMenu()和onOptionsItemSelected()方法

你不应该压倒一切

onMenuItemSelected()

 public class MainActivity extends AppCompatActivity { ... Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FragmentTransaction ft = getSupportFragmentManager.beginTransaction(); .... .... @Override public boolean onCreateOptionsMenu(Menu menu) { ... ... } @Override public boolean onOptionsItemSelected(MenuItem item) { ... }